我正在尝试使用新的抽屉导航。我遵循了指南,并设法让它与部分名称标题一起使用,更改所选项目等。现在我被困住了,因为我不知道如何归档我下一步想做的事情。
当我点击抽屉中的某个项目时 - 例如,home - 我希望它将我带到一个屏幕,在那里我拥有我在特定屏幕的特定布局中创建的所有内容.这都是静态的东西,比如 TextViews
和图像,所以我不需要对它们做任何事情。
我是否应该为抽屉的 ListView
上的每个项目创建一个 activity
和布局,然后(不知道如何)在 onItemSelected() 中启动该 Activity
?或者我可以在每次单击 ListView
中的项目时即时创建一个 fragment ,然后说一些类似的话
if(homeClicked){ //use home.xml as layout }
if(contactClicked){ //use contact.xml as layout }
编辑
作为测试,我将一个方法放入 onItemClick()
中,该方法传入数组位置 clicked。作为测试,我只是使用了这样的:
if(position==2) { // this is "contact" in the list layout
setContentView(R.layout.contacts);
}
它确实有效,但显然我丢失了抽屉,因为联系人布局内容未嵌套在 DrawerLayout
中。有没有更优雅的方法来实现我的目标,而不是在位置上使用 switch
并使用 setContentView()
,修改要嵌套在 DrawerLayout< 中的任何布局
? (我什至不知道这是否可能 - 可能不会,因为 ID 相同)
@Stefan 编辑了这个,因为评论回复中没有足够的空间
谢谢 Stefan,Google 的例子让我更加困惑。我敢肯定,我可能已经阅读了 10k 遍但我的大脑拒绝同化的 fragment 中有一些偷偷摸摸的东西。
据我所知,在 Google 的示例中,当您单击抽屉中的某个项目时,它会创建一个新 fragment 并使该 fragment 替换 MainActivity 中除抽屉的
的 xml 布局,这是一个占据屏幕所有空间的 ListView
之外唯一的东西FrameLayout
。然后, fragment 所做的就是显示一个行星 ImageView
,因此代码告诉 fragment 根据项目点击的 ListView
数组位置更改该图像。
最佳答案
好的,这里有很多入门问题,还有一个非常新且尚未定义的问题。
首先,您通过简单地开始一个新的Activity;
this.startActivity(new Intent(this, ActivityClassName.class));
来自任何 Activity(或 Fragment,稍微更改为 'this' = 'this.getActivity()' )
无论你使用Activity还是Fragments,你总是要创建一个类和一个所属的xml View 。 您可以构建一些通用的东西,但大多数时候您不想这样做。
关于是应该启动一个新的 Activity,还是应该在点击 Drawer 后切换 Fragments 的问题,我认为这仍然很难说。
一般来说,启动一个新的 Activity 是最简单也是最“应该”的。作为一个 Activity 应该等于一个可见的屏幕,可能有多个部分(可能是 Fragments)。
然而在实践中,您会看到越来越多的 Google 应用程序(Google Music、Play 商店、新 Gmail..)似乎放弃了这个想法并使用 1 个 Activity,它只会不断切换 Fragments。
从技术上讲,这种将 Activity 置于应用程序角色中,这会带来额外的困难。 然而,从视觉上看,过渡更加平滑,例如,操作栏保持不变,而且更像谷歌喜欢的“ anchor ”。
但是,他们似乎在教程中切换 fragment 而不是启动 Activity ,所以也许您应该尝试这种方式并处于“新做事方式”的最前沿:)
http://developer.android.com/training/implementing-navigation/nav-drawer.html
关于android - 使用抽屉导航更改 fragment (?)布局或 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16960498/