我正在尝试使用新的导航抽屉。我按照指南进行了操作,并设法使用章节名称标题更改所选项目等等。现在我被卡住了,因为我不知道如何归档我接下来要做的事情。
当我点击抽屉中的项目 - 主页时,例如 - 我希望它将我带到一个屏幕,其中我拥有我在特定屏幕的特定布局中创建的所有内容。它是所有静态的东西,如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 对此进行了编辑,因为评论回复中没有足够的空间
感谢Stefan,谷歌的例子让我更加困惑。我敢肯定,有一些关于片段的偷偷摸摸的东西,我可能已经阅读了10k次,但我的大脑拒绝同化。
据我所知,在谷歌的例子中,当你点击抽屉中的一个项目时,它会创建一个新的片段,并使这个片段替换ListView
中抽屉MainActivity
以外的唯一内容。 xml布局,它是占用屏幕所有空间的FrameLayout
。然后所有片段都会显示一个行星ImageView
,因此代码会根据项目点击的ListView
数组位置对片段进行更改。
答案 0 :(得分:5)
Oke,这里有许多初学者问题,还有一个非常新的和未定义的问题。
首先,你只需要开始一个新的活动;
this.startActivity(new Intent(this, ActivityClassName.class));
从任何活动(或片段,有点改为'this'='this.getActivity()')
无论您使用活动还是片段,您都必须创建一个类和一个所属的xml视图。 你可以建立一些通用的东西,但大多数时候你不想这样做。
关于如果你应该启动一个新的活动,或者在点击抽屉后切换碎片的问题,我会说这仍然很难说。
一般来说,开始一项新活动是最容易和最“应该”的。因为活动应该等于可见的屏幕,可能有多个部分(可能是片段)。
然而,在实践中,您会看到越来越多的Google应用(Google音乐,Play商店,新版Gmail等)似乎放弃了这个想法,并使用1只能不断切换片段的活动。
从技术上讲,这种将Activity置于应用程序角色中会带来额外的困难。 然而,在视觉上,过渡更平滑,因为,例如,动作栏保持不变,就像谷歌更喜欢它的“锚”。
然而,似乎他们正在教程中切换片段而不是开始活动,所以也许你应该尝试这种方式并处于“新的做事方式”的最前沿:)
http://developer.android.com/training/implementing-navigation/nav-drawer.html
答案 1 :(得分:0)
真的很困惑,我很确定Android工程师在这里错过了什么!
例如在iOS上,您可以在Windows上轻松拥有多个“UIViewController”,并为您的所有应用程序提供相同的菜单(或UITabViewController)。这是一个正常的行为,没有关于stackoverflow上的231个问题^^
但是在Android上,我看到没有人有一个干净的解决方案来使用NavDrawer或Tab with Activies; - (
我将选择单个活动和几个片段方法,让我们看看!