آموزش های این وب سایت به صورت رایگان در دسترس است. اطلاعات بیشتر
بروز خطا
   [message]
اشتراک در سوال
رای ها
[dataList]

سوال در مورد fragment back stack (مهم )

علی  11 سال پیش  11 سال پیش
+2 0

با سلام :

من این کد رو چه تغییری بدم که وقتی بک میزنم از برنامه نیاد بیرون و بره داخل 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 تا راه برای این کار هست، اولی این که لیست فرگمنت های لود شده رو بگیری و بهش بگی همه به جز فرگمنت اول رو ببند، راه دوم اینه که ببینی چند تا فرگمنت لود شده و با تعدادشون این کار رو هندل کنی.

0 0
من نتونستم handle کنم . 2 ساعت وقت دارم درست کنم کسی نیست کد همین بک رو بنویسه اینجا برای همین لیست؟ (11 سال پیش)
پاسخ به سوال 
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;
            }

جایگزین کردن فرگمنت

0 0
حاج حسین مشکل من اینه اصلا نمیدونم کجا بزارم اینا رو . کل کد های MailActivity رو بزارم اینجا واسم overwrite کنی برای همین بک؟ خیلی آبروریزیه وقتی کلا میاد بیرون. وقتمم کمه؟ میدونم اذیت میشی ولی لطف بزرگی میکنی الان برای من. (11 سال پیش)
پاسخ به سوال 
علی  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 رو نوشتمو میتونی با کدهای بالا جایگزین کنی

0 0
خوب من این کارو کردم . این ارور ها رو چطوری جایگزین کنم؟ (11 سال پیش)
پاسخ به سوال 
علی  11 سال پیش
0 0

+1 0
FrontFragment که همون فرگمنت اولتونه که میخواید نمایش داده بشه. fragmentManager رو هم زمانی که میخواید فرگمنت هارو بسازید new میکنید، پس باید متغیرش رو در بالای onCreate تعریف کنید و در onCreate مقدار بدید. توی onBackPressed از همون fragmentManager باید استفاده کنید. return رو هم خالی بذارید.یعنی return; (11 سال پیش)
0 0
ببخشید اصلا من میخوام بدونم آیا استاد تو آموزشا از فرگمنت چیزی گفتن ؟ اگه گفته شده تو کدوم قسمت ؟ دلم میخواد مطالعه کنم نمیدونم اصلا چی هست! ممنون میشم. (11 سال پیش)
0 0
دیگه این Return مشکلش چیه ؟ Eminent جان من یه Navigation Drawer دارم که به جای اکتیویتی از فرگمنت ها استفاده میشه. تو آمزش های استاد به این شکل نه. (11 سال پیش)
پاسخ به سوال 
علی  11 سال پیش
0 0

0 0
این ارور چطوری حل میشه حاج حسین؟ (11 سال پیش)
0 0
کدهاتون رو باید زیر super.onBackPressed بنویسید (11 سال پیش)

پاسخگویی و مشاهده پاسخ های این سوال تنها برای اعضای ویژه سایت امکان پذیر است .
چنانچه تمایل دارید به همه بخش ها دسترسی داشته باشید میتوانید از این بخش لایسنس این آموزش را خریداری نمایید .