14

我的应用程序结构如下:

  SplashActivity -> MainActivity -> (switching between many fragments)

我的期望:当片段返回堆栈计数为零时,从主要活动完成应用程序。这是我的尝试:

在 Splash 活动中

  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();
4

1 回答 1

38

这是我的代码。这对我来说可以:

@Override
public void onBackPressed() {

    int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount();
    if (backStackEntryCount == 0) {
        goBack();   // write your code to switch between fragments.
    } else {
        super.onBackPressed();
    }
}
于 2014-08-25T11:15:06.710 回答