بروز خطا
[message]
اشتراک در سوال
رای ها
[dataList]
سوال در مورد fragment back stack (مهم )
با سلام :
من این کد رو چه تغییری بدم که وقتی بک میزنم از برنامه نیاد بیرون و بره داخل FragmentHome ؟
private void displayView(int position) {
// update the main content by replacing fragments
Fragment fragment = null;
switch (position) {
case 0:
fragment = new HomeFragment();
break;
case 1:
fragment = new ProductFragment();
break;
case 2:
fragment = new ResellerFragment();
break;
case 3:
fragment = new CooperationFragment();
break;
case 4:
fragment = new NewsFragment();
break;
case 5:
fragment = new AboutUsFragment();
break;
case 6:
fragment = new GalleryFragment();
break;
case 7:
fragment = new ContactFragment();
break;
case 8:
fragment = new ExitFragment();
default:
break;
}
if (fragment != null) {
FragmentManager fragmentManager = getFragmentManager();
fragmentManager.beginTransaction()
.replace(R.id.frame_container, fragment) .commit();
// update selected item and title, then close the drawer
mDrawerList.setItemChecked(position, true);
mDrawerList.setSelection(position);
setTitle(navMenuTitles[position]);
mDrawerLayout.closeDrawer(cDrawerList);
} else {
// error in creating fragment
Log.e("MainActivity", "Error in creating fragment");
}
}
برای این سوال 6 پاسخ وجود دارد.
پاسخ به سوال
Hajhosseini
11 سال پیش
+3
0
برای این کار باید توی onBackPressed توی اکتیویتی بهش بگید فرگمنت جاری رو replace کنه، ولی باید فرگمنت هایی که باز هستن رو ببندید. 2 تا راه برای این کار هست، اولی این که لیست فرگمنت های لود شده رو بگیری و بهش بگی همه به جز فرگمنت اول رو ببند، راه دوم اینه که ببینی چند تا فرگمنت لود شده و با تعدادشون این کار رو هندل کنی.
پاسخ به سوال
Hajhosseini
11 سال پیش
+2
0
getSupportFragmentManager().popBackStack();
لیست فرگمنت هارو خالی میکنه.
if (getSupportFragmentManager().getBackStackEntryCount() >= 1) {
return false;
} else {
android.support.v4.app.FragmentTransaction fragmentTransaction = fragmentManager.beginTransaction();
fragmentTransaction.replace(R.id.container, FrontFragment.newInstance(),"front")
.commit();
return true;
}
جایگزین کردن فرگمنت
پاسخ به سوال
علی
11 سال پیش
0
0
پاسخ به سوال
Hajhosseini
11 سال پیش
+1
0
کد هارو باید توی اکتیویتی در این قسمت (که اضافه میکنی) قرار بدی.
@Override
public void onBackPressed() {
if (mNavigationDrawerFragment.isDrawerOpen()) {
mNavigationDrawerFragment.closeDrawer(Gravity.RIGHT);
return;
} else if (replaceFragment() == true)
return;
super.onBackPressed();
}
اون قسمتی که replaceFragment رو نوشتمو میتونی با کدهای بالا جایگزین کنی
پاسخ به سوال
علی
11 سال پیش
0
0
FrontFragment که همون فرگمنت اولتونه که میخواید نمایش داده بشه. fragmentManager رو هم زمانی که میخواید فرگمنت هارو بسازید new میکنید، پس باید متغیرش رو در بالای onCreate تعریف کنید و در onCreate مقدار بدید. توی onBackPressed از همون fragmentManager باید استفاده کنید. return رو هم خالی بذارید.یعنی return; (11 سال پیش)
پاسخ به سوال
علی
11 سال پیش
0
0
پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .

