当我点击抽屉中的一个项目 - 例如“主页” - 我希望它将我带到一个屏幕,其中我有所有我为特定屏幕创建的布局中的内容。这些都是静态的东西,如TextView和图像,所以我不需要对它们做任何事情。
我应该为抽屉的每个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,Google的示例让我更加困惑。我确定关于片段有一个非常微小的诡计,我可能已经读了10k次,但我的大脑拒绝吸收。 据我所知,在Google的示例中,当您单击抽屉中的项目时,它会创建一个新的片段,并使该片段替换除
MainActivity
的XML布局中除抽屉ListView
之外的唯一内容外,该内容是占据整个屏幕空间的FrameLayout
。然后,所有片段都只显示一个行星ImageView
,因此代码会告诉片段根据项目点击的ListView
数组位置更改该图像。