Я пишу приложение, которое имеет навигации вроде:переключение между различными видами деятельности и удалить предыдущий (только один) намереваюсь история стека
старт приложения -> A (домашняя страница) -> B -> C -> D
(оба активности B, C, D имеет такую же панель навигации, и это может позволить пользователям переключения страниц между B, C, D.)
Однако Существует проблема, когда я нажимаю назад в деятельности B, C, D.
есть пример:
если я нажимаю назад в B, а затем обратно к дому.
, если я нажимаю назад в C, а затем обратно к B.
если я нажимаю назад в D, а затем обратно в С.
, но это не то, что я хочу.
Я хочу, чтобы поток, как показано ниже (нет пользователей независимо от того, не просматривает B/C/D, когда они нажимают назад, а затем обратно домой)
т.е.
A (домашняя страница) -> B -> (нажмите назад) -> A
A (домашняя страница) -> B -> C -> (нажмите назад) -> A
A (домашняя страница) -> B - > C -> D -> (нажмите обратно) -> A
A (домашняя страница) -> B -> C -> D -> B -> D -> (нажмите назад) -> A (домашняя страница)
A -> B -> C -> B -> D -> (нажмите обратно) -> A
Другими словами, я хочу, чтобы B, C, D были на одном уровне в иерархии навигации.
Вот мои коды переключения деятельности между B, C, D.
Оба B, C, D имеют эту часть кодов.
Коды ржали в активность B:
private void switchActivity(){
NavigationView mNavigationView = (NavigationView) findViewById(R.id.navigationView);
mNavigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(MenuItem menuItem) {
Intent intent = new Intent();
if(menuItem.getTitle().toString().equals("B")) {
intent = getIntent();
finish();
}
if(menuItem.getTitle().toString().equals("C")) {
intent.setClass(getApplicationContext(), CActivity.class);
}
if(menuItem.getTitle().toString().equals("D")) {
intent.setClass(getApplicationContext(), DActivity.class);
}
startActivity(intent);
return true;
}
});
}
Это то, что я хочу, но я должен очистить предыдущие флаги, когда возвращаюсь на домашнюю страницу методом onBackPressed(). Итак, я добавил следующее: intent.setFlags (Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); , и он отлично работает, как и ожидалось. Большое вам спасибо –
@Dileep Patel nice edit lolz –