我的应用程序结构如下:
SplashActivity -> MainActivity -> (switching between many fragments)
我期望的:当片段堆栈计数为零时,从主要活动完成应用程序.这是我的尝试:
在SplashAcitivty
public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); if (getIntent().getBooleanExtra("exit",false)) { finish(); } }
主要活动:
@Override public void onBackPressed() { // I need to implement this method if( backstackCount() == 0){ Intent intent = new Intent(this,SplashActivity.class); intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); intent.putExtra(SplashActivity.EXIT_KEY,true); startActivity(intent); }else{ super.onBackPressed(); } }
所以,请告诉我如何确定后面的堆栈空吗?因为我使用SlideMenu库,所有的碎片都会切换多次,并且在切换时被添加到后面的堆栈中.看起来像这样:
getSupportFragmentManager() .beginTransaction() .replace(R.id.content_frame,fragment) .addToBackStack(null) .commit();
解决方法
这是我的代码这对我来说很好:
@Override public void onBackPressed() { int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount(); if (backStackEntryCount == 0) { goBack(); // write your code to switch between fragments. } else { super.onBackPressed(); } }