2013-08-29 3 views
9

структуры Моего приложения выглядит следующим образом:Определить фрагмент backstack пустого состояние в андроиде

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

вы можете использовать 'getBackStackEntryCount' – dreamcoder

+0

@dreamcoder Спасибо, это сработало. Я не верю, что не знаю этого. Не могли бы вы ответить на мой вопрос, тогда я могу это принять? – R4j

ответ

24

Вот мой код. Он отлично подходит для меня:

@Override 
public void onBackPressed() { 

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

Пропустил нахальный '}' на конце. –

Смежные вопросы