带有活动和子片段的导航抽屉

7

我有一个名为AActivity,一个ListFragmentP和两个FragmentQR

应用程序启动时,创建了A,它加载P。根据用户的点击,它被QR替换。

现在,参考教程,我已经实现了一个显示给用户某些项目的导航抽屉。然而,因为我在Activity中实现了导航抽屉,所以它对所有的Fragment都可见。 我希望它仅适用于P

(与Google的Gmail应用程序非常相似。当用户在主屏幕上时-抽屉是存在的。当用户点击打开电子邮件时,抽屉会变成返回按钮)

我不确定如何翻译上面的代码。任何帮助都将不胜感激。


你确定这不是另一个活动吗?我认为你可以将Framelayout作为活动布局,然后替换抽屉片段。 - sherpya
如果你想把抽屉作为一个片段实现并替换它,那么这是一个有趣的建议,我没有考虑过。我会尝试一下并回复你! - rgamber
DrawerLayout 是一个 Layout,我认为你可以将其填充到一个片段中。 - sherpya
我正在使用一个列表片段,它使用默认的Android列表布局。但是我将尝试使用自定义布局。虽然对于抽屉,我猜我仍然需要活动上下文。所以不确定它如何特定于该片段。 - rgamber
如果您需要自定义ListFragment布局,可以参考我的帖子https://dev59.com/NWbWa4cB1Zd3GeqPatBm#12145683。 - sherpya
@sherpya,这个问题的解决方案非常简单 :) 如果你感兴趣,我已经添加了我的答案! - rgamber
2个回答

8
我通过调用mDrawerToggle.setDrawerIndicatorEnabled(enable)方法并根据需要传递布尔值enabledisable,简单地覆盖了向上箭头的行为。在我不希望抽屉显示的片段中,使用false调用此方法,在我希望显示抽屉的片段中,使用true调用此方法。出于明显的原因,我将此调用放在相应片段的onResume()中。这正是我想要的效果,而且我不必改变我的项目设计 :).

0
你可以创建一个新的FragmentActivityS,并相应地替换QR。如果你的应用是为Android 3.0以下的用户设计的,则创建一个ActionBarActivity,创建一个actionbar并设置其setDisplayHomeAsUpEnabled(true)。由于新的FragmentActivity将有新的布局,因此将没有NavigationDrawer

这是显而易见的解决方案,没错。但我想看看是否有一种只使用片段来完成它的方法,并避免引入不必要的活动。 :) - rgamber
据我所知,当“Fragment”在“FrameLayout”中被替换时,主要的“layout”保持不变,只有“FrameLayout”的内容在“Fragment”被替换时才会改变,“NavigationDrawer”附加到主布局上,因此它始终位于“FrameLayout”之上。 - Atif Farrukh

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接