यह परीक्षण किया जाता है जवाब, आशा है यह मदद से आप पहले MainActivity
private static final int TIME_INTERVAL = 2000;
private long mBackPressed;
private FragmentManager fm;
private FragmentTransaction ft;
private DrawerLayout drawer;
अब onNavigationItemSelected में
में विश्व स्तर पर इन क्षेत्र बनाओ() को लागू जैसे
@Override
public boolean onNavigationItemSelected(MenuItem item) {
Fragment fragment = null;
Class fragmentClass = null;
switch (item.getItemId()) {
case R.id.nav_home:
fragmentClass = Fragment.class;//this is MainAvctivty extends AppCompatActivity
break;
case R.id.nav_f1:
fragmentClass = FragmentOne.class;
break;
case R.id.nav_f2:
fragmentClass = FragmentTwo.class;
break;
case R.id.nav_f3:
fragmentClass = FragmentThree.class;
break;
case R.id.nav_f4:
fragmentClass = FragmentFour.class;
break;
case R.id.nav_f5:
fragmentClass = FragmentFive.class;
break;
default:
fragmentClass = Fragment.class;
}
try {
fragment = (Fragment) fragmentClass.newInstance();
} catch (Exception e) {e.printStackTrace();}
//Insert the fragment by replacing any existing fragment
fm = getSupportFragmentManager();
ft = fm.beginTransaction();
ft.replace(R.id.frame_container, fragment);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN);
ft.addToBackStack(null);
ft.commit();
item.setChecked(true);
setTitle(item.getTitle());
drawer.closeDrawers();
return true;
}
अब की तरह
नीचे
@Override
public void onBackPressed() {
if (drawer != null) {
fm = getSupportFragmentManager();
ft = fm.beginTransaction();
if (drawer.isDrawerOpen(GravityCompat.START)) {
drawer.closeDrawer(GravityCompat.START);
} else if (fm.getBackStackEntryCount() > 0) {
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_CLOSE);
ft.commit();
} else if (mBackPressed + TIME_INTERVAL > System.currentTimeMillis()) {
super.onBackPressed();
} else {
Toast.makeText(this,"Press again to exit the app",Toast.LENGTH_SHORT).show();
}
mBackPressed = System.currentTimeMillis();
}
}
स्रोत
2016-09-09 05:48:05
मैं समाधान टुकड़ा और नहीं वापस ढेर टैग करने के लिए समझौता हुआ onbackpressed संभाल। यह भी दिलचस्प लगता है, एक और बार कोशिश कर सकते हैं। –
बाहर निकलता है, कि पिछली परत पर स्विच करते समय, यदि आप बैकस्टैक पॉप नहीं करते हैं, तो बैक बाद में एक त्रुटि पर देता है। इसलिए, मैंने एक मौजूदा खंड का पुन: उपयोग करते समय, एक पॉपबैकस्टैकइमीडिएट जोड़ा। –
बैक स्टैक पॉपिंग के मामले में आप लेखक को वांछित "एक टुकड़ा का एक उदाहरण" खो देंगे – Androider