安卓导航抽屉

7

我正在尝试探索谷歌标准化的新导航抽屉。现在我们也有了官方代码。

我正试图理解在我的应用程序中实现相同功能的最佳方法。

我的应用程序结构如下:

-MainActivity
----Featured Tab
----Favorites Tab

点击任何一个选项卡中的元素,都会将我带到下方。

ContentActivity
----Info Tab
----Map Tab

现在我感到困惑的是所有上述内容都必须放入新的导航抽屉视图中。
由于导航抽屉结构类似于这样:一个带有布局的活动,该布局包含导航抽屉视图和内部包含内容布局和抽屉布局。在点击抽屉中的选项时,我应该完全替换内容布局还是打开新的活动?
2个回答

3
在“处理导航单击事件”下的创建导航抽屉文档中详细介绍了它如何使用片段来实现。当用户选择一个选项时,只需替换内容片段,导航抽屉就可以保持在其原本的位置不变。如果遵循文档的说明,则应该没有问题。
如果你还未接触过片段,那么在片段文档中了解一下会很有价值。它们类似于活动,但也有一些区别,允许Android同时显示多个片段。

假设我在导航抽屉的第二个选项卡中有多个选项卡。我需要动态构建选项卡以替换屏幕一上的所有内容吗? - Harsha M V
1
无论您的第二个活动是否具有选项卡,都不应该有影响 - 每个屏幕将是一个单独的片段,您可以使用类似于视图的XML进行配置。通常阅读有关片段的信息可能会有所帮助,因为导航抽屉只是片段的特殊用例。 - Nick
谢谢,我会阅读的。看起来我们可以在片段内使用选项卡。 - Harsha M V
虽然示例使用了Fragment(切换内容)-但这并不是必需的。您可以在selectItem方法中执行任何操作(因此,如果这是首选操作,您也可以启动新Activity)。总之,Fragment在示例中使用,但对于此实现来说并非必需。 - Booger
由于导航抽屉是活动的一部分,启动新活动会删除/重置抽屉吗? 这看起来有点凌乱。而且您必须在每个活动中都包含它。 我同意您可以不使用片段实现此功能,但我认为使用片段效果最好。另外,在平板电脑上可以提供更好的体验。 - Nick
我在自己的代码中实际上使用了Fragment来处理这种情况(但我们在ActionBar中使用Spinner来控制要切换哪个Fragment)。我认为这是一个好主意,但我不认为对于导航抽屉来说是必要的(如果你是新开发人员,使用Fragment可能会增加复杂性)。 - Booger

1
答案是你可以选择任一种方式,你可以使用新的Fragment替换内容,或者启动一个新的Activity。
在selectItem(position)方法中,你可以自由操作。
官方文档在他们的例子中使用了Fragments,但这并不是必需的。你可以在这个方法中做任何你想做的事情(只需从Toast或Logcat消息开始,以查看单击元素时会发生什么)。

3
有时候我觉得谷歌的文档过于复杂了,我认为在这个例子中添加Fragment会让它更难理解。我也认为为列表项使用外部化数组过于复杂(对于这个例子来说)。 - Booger
1
如果我启动新的活动,并且我想在这些活动中再次使用导航抽屉,那么如何实现此功能而不必一遍又一遍地重写导航抽屉显示代码?我尝试使用BaseActivity,然后从它派生出其他被导航抽屉调用的活动。问题是,如果我为新活动有一个不同的布局,则无法访问导航抽屉布局。我需要在活动布局中包含此导航抽屉布局吗? - fischer_zh
请开一个新的问题来讨论此事。这是一个新问题,无法在评论中解决。 - Booger
刚刚已经完成了,抱歉... https://dev59.com/lnTYa4cB1Zd3GeqP1P5I - fischer_zh

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