确定android中的backstack片段空状态

R4j*_*R4j 12 android android-fragments android-activity

我的应用程序结构如下:

  SplashActivity -> MainActivity -> (switching between many fragments)
Run Code Online (Sandbox Code Playgroud)

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

在SplashAcitivty中

  public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    if (getIntent().getBooleanExtra("exit", false)) {
        finish();
    }
  }
Run Code Online (Sandbox Code Playgroud)

在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();
   }
}
Run Code Online (Sandbox Code Playgroud)

所以,请告诉我如何在空的时候确定后筹码?因为我使用SlideMenu库,所以我的所有片段都会多次切换,并且在切换时会将它们添加到后台堆栈中.看起来像这样:

 getSupportFragmentManager()
    .beginTransaction()
    .replace(R.id.content_frame, fragment)
    .addToBackStack(null)
    .commit();
Run Code Online (Sandbox Code Playgroud)

小智 34

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

@Override
public void onBackPressed() {

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