我正在尝试使用新的导航抽屉。我遵循了指导方针,并设法让它与节名、标题、项的选择等一起工作。现在我被困住了,因为我不知道如何归档我接下来要做的事情。
例如,当我单击抽屉- home中的一个项目时,-I希望它将我带到一个屏幕上,在这个屏幕上,我在特定屏幕的特定布局中创建了所有的东西。所有这些都是静态的,比如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
中的。是否有更优雅的方法来实现我的目标,而不是在位置上使用switch
和使用setContentView()
,修改嵌套在DrawerLayout
中的任何布局?(我甚至不知道这是否可能-也许是不可能的,因为有相同的ID)
@Stefan编辑了这篇评论,因为评论回复中没有足够的空间
谢谢斯特凡,谷歌的例子让我更加困惑。我敢肯定,关于片段,我可能读了10k遍,但我的大脑拒绝同化。据我所知,在谷歌的例子中,当你点击抽屉中的一个项目时,它确实创建了一个新的片段,并使这个片段取代了MainActivity
的xml布局中除了抽屉的MainActivity
之外唯一的东西,即占用屏幕所有空间的FrameLayout
。然后所有片段都显示一个行星ImageView
,所以代码告诉片段根据项目点击的ListView
数组位置更改图像。
发布于 2013-06-06 11:29:45
好的,这里有很多开始的问题,加上一个还没有定义的新问题。
首先,你只要简单地做一件事就开始一个新的活动;
this.startActivity(new Intent(this, ActivityClassName.class));
从任何活动(或片段,稍微修改为'this‘= 'this.getActivity()’)
无论您使用活动还是片段,您都必须创建一个类和一个属于xml的视图。你可以建立一些通用的东西,但大多数时候你不想这样做。
关于这个问题,如果你应该启动一个新的活动,或者在点击抽屉后切换片段,我会说这仍然很难说。
一般来说,仅仅开始一项新的活动是最简单的,也是最应该的。因为一个活动应该等于一个可见的屏幕,可能有多个部分(可以是片段)。
然而,在实践中,你会看到越来越多的谷歌应用程序(谷歌音乐、游戏商店、新Gmail)。它似乎放弃了这个想法,而使用了一个只会不断切换片段的活动。
从技术上讲,这种类型将活动放置在应用程序角色中,这会带来额外的困难。然而,从视觉上看,转换要顺利得多,例如,actionbar保持不变,这更像是Google所喜欢的“锚”。
然而,他们似乎是在切换教程中的片段,而不是开始活动,所以也许您应该尝试这样做,并处于“新的做事方式”的边缘:)
http://developer.android.com/training/implementing-navigation/nav-drawer.html
发布于 2013-06-18 19:05:42
真的很困惑,我很确定Android工程师在这里漏掉了什么!
例如,在iOS上,您可以很容易地在窗口上拥有多个"UIViewController“,并为所有应用程序提供相同的菜单(或UITabViewController)。这是关于堆栈溢出^^的正常行为w/o 231问题。
但是在Android上,我发现没有人有一个干净的解决方案,可以在活动中使用NavDrawer或Tab;
我将选择单一的活动和几个片段的方法,让我们看看!
https://stackoverflow.com/questions/16960498
复制相似问题