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

Posted

技术标签:

【中文标题】带有活动和子片段的导航抽屉【英文标题】:Navigation drawer with Activity and child Fragments 【发布时间】:2014-04-14 12:41:12 【问题描述】:

我有一个 Activity A、一个 ListFragment P2 Fragments QR

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

现在通过参考this 教程,我实现了一个向用户显示某些项目的导航抽屉。但是,由于我在 Activity 中实现了 Navigation Drawer,它会显示所有片段。 我希望它只对P 可用。

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

我不知道如何翻译上面的代码。任何帮助表示赞赏。

【问题讨论】:

您确定这不是其他活动吗?我认为您无论如何都可以将框架布局作为活动布局,然后完全替换抽屉片段 如果您的意思是将抽屉实现为片段并替换它,那么这是一个我没有想到的有趣建议。会尽力回复您! DrawerLayoutLayout 我想你可以把它膨胀成一个片段 好吧,我正在使用一个使用默认 android 列表布局的列表片段。但我会尝试使用自定义布局。虽然对于抽屉,我猜我仍然需要活动上下文。所以不确定它如何特定于该片段。 如果需要自定义ListFragment布局可以关注我的帖子***.com/questions/11770773/… 【参考方案1】:

我通过调用mDrawerToggle.setDrawerIndicatorEnabled(enable) 并根据需要传递boolean enabledisable 来简单地覆盖向上克拉行为,从而解决了这个问题。

(我不希望抽屉显示的片段使用 false 调用此方法,而我希望显示抽屉的片段使用 true 调用此方法。出于显而易见的原因,我将调用放在相应片段的onResume() 中。)

这完全符合我的要求,而且我不必更改项目的设计:)。

【讨论】:

【参考方案2】:

您可以做的是创建一个新的FragmanetActivityS 并相应地替换QR。如果您的应用适用于 Android 3.0 较低的用户 ActionBarActivity,请创建一个 actionbar 并设置其 setDisplayHomeAsUpEnabled(true)。由于新的FragmentActivity 将有新的布局,所以不会有NavigationDrawer

【讨论】:

这是显而易见的解决方案,是的。但我想看看是否有办法只使用片段,并避免引入不必要的活动。 :) @rgamber AFAIK 我认为它不可能,因为当Fragment 被替换为FrameLayout 时,主要的layout 保持不变。每当 Fragment 被替换并且 NavigationDrawer 附加到主布局时,FrameLayout 的内容就会发生变化,因此它将始终位于 FrameLayout 上方。

以上是关于带有活动和子片段的导航抽屉的主要内容,如果未能解决你的问题,请参考以下文章

带有嵌套片段的导航抽屉 (ViewPager)

带有许多片段的 Android 导航抽屉

从片段中禁用导航抽屉

如何在主片段中单击按钮时打开导航抽屉?

如何在导航抽屉活动模板中的片段之间传递字符串变量

在导航抽屉上调用不是片段活动的活动