确定android中的backstack片段空状态

时间:2013-08-29 04:46:32

标签: android android-fragments android-activity

我的应用程序结构如下:

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

1 个答案:

答案 0 :(得分:29)

这是我的代码。它适用于我:

@Override
public void onBackPressed() {

    int backStackEntryCount = getSupportFragmentManager().getBackStackEntryCount();
    if (backStackEntryCount == 0) {
        goBack();   // write your code to switch between fragments.
    } else {
        super.onBackPressed();
    }
}