9

我正在尝试使用新的Navigation Drawer。我遵循了该指南,并设法让它在所选项目上更改部分名称标题等。现在我被困住了,因为我不知道如何归档我接下来想做的事情。

当我点击抽屉中的一个项目时 -例如- 我希望它把我带到一个屏幕,在那里我拥有我在特定屏幕的特定布局中创建的所有内容。这都是静态的东西,比如TextViews和图像,所以我不需要对它们做任何事情。

我应该为抽屉activity上的每个项目创建一个布局ListView并(不知道如何)开始活动onItemSelected()吗?或者我可以做一些事情,比如每次我点击一个项目时动态创建一个片段,ListView然后说类似的话

if(homeClicked){ //use home.xml as layout }
if(contactClicked){ //use contact.xml as layout }

编辑

作为测试,我放入了onItemClick()一个在单击的数组位置中传递的方法。作为一个测试,我刚刚使用过:

if(position==2) { // this is "contact" in the list layout
  setContentView(R.layout.contacts);
}

它确实有效,但显然我丢失了抽屉,因为联系人布局的东西没有嵌套在DrawerLayout. 有没有更优雅的方式来实现我的目标,而不是使用switchon 位置和使用setContentView(),修改任何要嵌套在 a 中的布局DrawerLayout?(我什至不知道这是否可能 - 可能不是,因为有相同的 ID)

@Stefan编辑了这个,因为评论回复中没有足够的空间

谢谢 Stefan,Google 的例子让我更加困惑。我敢肯定,我可能已经阅读了 10k 次但我的大脑拒绝同化的片段有一点偷偷摸摸的东西。据我了解,在 Google 的示例中,当您单击抽屉中的一个项目时,它确实会创建一个新片段,并使该片段替换除xml 布局ListView中的抽屉之外唯一的东西,这是一个包含所有屏幕的空间。然后所有片段所做的就是显示一个行星,因此代码告诉片段根据项目单击的数组位置更改该图像。MainActivityFrameLayoutImageViewListView

4

2 回答 2

5

好的,这里有很多入门问题,还有一个非常新且尚未定义的问题。

首先,您只需执行以下操作即可启动一个新 Activity;

this.startActivity(new Intent(this, ActivityClassName.class)); 

从任何 Activity(或 Fragment,稍微更改为 'this' = 'this.getActivity()' )

无论您使用的是活动还是片段,您都必须始终创建一个类和一个所属的 xml 视图。你可以建立一些通用的东西,但大多数时候你不想这样做。

关于是否应该启动一个新的活动,或者在点击抽屉后切换片段的问题,我想说这仍然很难说。

一般来说,开始一个新的活动是最简单和最“应该”的。作为一个活动应该等于一个可见的屏幕,可能有多个部分(可能是片段)。

然而,在实践中,您会看到越来越多的 Google 应用程序(Google Music、Play 商店、新的 Gmail..)似乎放弃了这个想法并使用 1 Activity,它只会不断地切换 Fragments。

从技术上讲,这种方式将 Activity 置于 Application 角色中,这会带来额外的困难。然而,在视觉上,转换更加平滑,例如,操作栏保持不变,并且更像是谷歌喜欢的“锚”。

然而,他们似乎在他们的教程中切换片段而不是开始活动,所以也许你应该尝试这种方式并处于“新的做事方式”的最前沿:)

http://developer.android.com/training/implementing-navigation/nav-drawer.html

于 2013-06-06T11:29:45.683 回答
0

真的很困惑,我很确定 Android 工程师在这里遗漏了一些东西!

例如,在 iOS 上,您可以轻松地在窗口上拥有多个“UIViewController”,并为所有应用程序拥有相同的菜单(或 UITabViewController)。这是在stackoverflow上没有231个问题的正常行为^^

但在 Android 上,我看没有人有一个干净的解决方案来使用 NavDrawer 或 Tab 与 Activies ;-(

我将选择单个活动和几个片段的方法,让我们看看!

于 2013-06-18T19:05:42.340 回答