【发布时间】:2014-03-03 22:01:23
【问题描述】:
我环顾四周,但没有找到针对我的特定问题的真正解决方案。所以我有一个导航主活动,它由一个导航抽屉和我的内容的框架布局组成。
在我的导航抽屉中有三个按钮,每个按钮都用一个特定的片段填充框架布局。其中一个片段充当“主视图”,单击该片段中的项目然后打开另一个片段,即“详细信息视图”。
我遇到的问题是:如果我在细节视图片段中,并且我单击导航抽屉中的另一个按钮转到另一个片段,然后单击导航抽屉按钮返回到我的详细信息视图然后没关系,我到那里好。但是,当我点击后退按钮时,它会将我带回到上一个片段而不是主视图片段。有什么办法可以解决这个问题吗?
这是我如何在导航抽屉中的不同片段之间移动的 sn-p:
private void selectItem(int position)
{
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = null;
Bundle args = new Bundle();
switch (position)
{
case 0:
fragment = new ReportIt();
fragment.setArguments(args);
break;
case 1:
Fragment f = fragmentManager.findFragmentByTag("article_view");
if (f == null)
{
fragment = new ReadIt();
fragment.setArguments(args);
}
else
{
fragment = f;
}
break;
case 2:
fragment = new FindIt();
fragment.setArguments(args);
break;
default:
fragment = new ReportIt();
fragment.setArguments(args);
break;
}
fragmentManager.beginTransaction()
.replace(R.id.content_frame, fragment).addToBackStack(null)
.commit();
mDrawerList.setItemChecked(position, true);
setTitle(mNavTitles[position]);
mDrawerLayout.closeDrawer(mDrawerList);
}
我的主视图片段将控制权传递给细节片段:
FragmentManager fragmentManager = getFragmentManager();
Fragment fragment = new ReadItDetail();
Bundle args = new Bundle();
args.putString("ArticleId", pr.GetId());
fragment.setArguments(args);
fragmentManager.beginTransaction().addToBackStack(null)
.replace(R.id.content_frame, fragment, "article_view")
.commit();
从图中可以看出,所有 3 个抽屉式导航按钮都是我的主要活动的一部分。在我的主要活动中还有一个使用所示片段的框架布局。导航抽屉按钮框之外的所有框都是片段。大师和细节是我遇到的问题。当我移动到其他片段,然后回到我的细节片段时,点击后退按钮,我希望它 100% 的时间回到主片段,而不是回到我可能一直在使用的任何其他片段以前。
【问题讨论】:
-
我对您的应用程序的结构感到困惑。主片段与其他片段的关系在哪里?这些是一一加载的吗?如果是这样,你想回到哪一个?听起来这只是一个后台问题。
-
我已更新我的信息以澄清。
标签: android navigation fragment back