android - 片段的Backstack概念
问题描述
我创建了一个带有导航抽屉的应用程序。我有3个片段。
在我的主要活动中,我调用了一个已经是导航项的片段。我从导航栏中单击了所有片段,当我按下后退按钮时,它会转到上一个片段并转到主页片段。
但是,每当我按下任何片段中的返回按钮时,我都想返回主片段。
让我知道是否需要添加更多详细信息。
navigationView.setNavigationItemSelectedListener(new NavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem menuItem) {
switch (menuItem.getItemId()) {
case R.id.nav_home:
fragment = new HomeFragment();
TAG_FRAGMENT="Home";
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment,TAG_FRAGMENT).commit();
break;
case R.id.nav_about:
fragment = new AboutUs();
TAG_FRAGMENT="About";
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment,TAG_FRAGMENT).addToBackStack(null).commit();
break;
case R.id.nav_feedback:
fragment = new Feedback();
TAG_FRAGMENT="Feedback";
getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragment,TAG_FRAGMENT).addToBackStack(null).commit();
break;
}
drawerLayout.closeDrawer(GravityCompat.START);
return true;
}
});
}
@Override
public void onBackPressed() {
drawerLayout = findViewById(R.id.drawer_layout);
if (drawerLayout.isDrawerOpen(GravityCompat.START)) {
drawerLayout.closeDrawer(GravityCompat.START);
}
else {
if (getSupportFragmentManager().getBackStackEntryCount() > 0) {
getSupportFragmentManager().popBackStack();
} else {
super.onBackPressed();
}
}
}
}
解决方案
推荐阅读
- php - 通过单击提交按钮提交表单数据时验证在 PHP 中不起作用
- python - Why groupby in Pandas print not all columns?
- c# - Object is being spammed when it comes to my timeBetweenShot variable, can anyone take a look?
- php - 如何测试本地环境和外部服务(webhook)之间的集成
- html - 如何使字体 FuturaPtBooks 在 html 中可用
- apache-kafka - Kafka 代理在清理日志文件时关闭
- git - 如何将作者从 svn 映射到 git?
- r - R中向量与向量列表之间的角度
- mongodb - 如何聚合按自定义时间间隔分组的结果
- c# - Application.UseWaitCursor 有时会延迟