我正在做一个基于NavigationDrawer的应用程序.我有一个如下所示的层次结构
NavigationDrawer –> RootFragment(Not added to back Stack) –> Detail
Fragment (Added to Back Stack)
现在,我试图通过按后退按钮尝试退出应用程序时向用户显示一条消息.这是我正在使用的代码.
@Override
public void onBackpressed() {
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStack();
}
else if (getFragmentManager().getBackStackEntryCount() == 0) {
new AlertDialog.Builder(this)
.setMessage("Are you sure you want to exit?")
.setCancelable(false)
.setPositiveButton("Yes",new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,int id) {
MainActivity.this.finish();
}
})
.setNegativeButton("No",null)
.show();
}
else
{
super.onBackpressed();
}
}
当我从详细信息片段中单击后退按钮(添加到后台堆栈)时,我收到警报消息.相反,我会回到根片段.
但是,如果我像这样更新代码,按后退按钮会将用户带回到根视图.所以它看起来像getFragmentManager().getBackStackEntryCount()即使将详细片段添加到后台堆栈也是零.
@Override
public void onBackpressed() {
if (getFragmentManager().getBackStackEntryCount() > 0) {
getFragmentManager().popBackStack();
}
else
{
super.onBackpressed();
}
}
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = SubCategoryListFragment.newInstance(false);
fragmentManager.beginTransaction()
.add(R.id.subCategoryDetails,fragment)
.addToBackStack(null)
.commit();
这是从导航抽屉侧面菜单打开的根视图.
我在这做错了什么?什么是正确的实现方式?
谢谢.
最佳答案
假设您正在使用支持片段,则必须在Activity中使用getSupportFragmentManager().使用getFragmentManager(),您将获得本机片段管理器.但是,在支持片段类中,getFragmentManager()返回支持片段管理器,这可能有点令人困惑.
原文地址:https://www.jb51.cc/android/429926.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。