我的应用程序结构如下:
SplashActivity -> MainActivity -> (switching between many fragments)
我的期望:当片段返回堆栈计数为零时,从主活动完成应用程序。这是我的尝试:
在SplashAcitivty
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if (getIntent().getBooleanExtra("exit", false)) {
finish();
}
}
在MainActivity中:
@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();
答案 0 :(得分:29)
这是我的代码。它适用于我:
@Override
public void onBackPressed() {
int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount();
if (backStackEntryCount == 0) {
goBack(); // write your code to switch between fragments.
} else {
super.onBackPressed();
}
}