android - 使用抽屉导航更改 fragment (?)布局或 Activity

标签 android fragment drawer

我正在尝试使用新的抽屉导航。我遵循了指南,并设法让它与部分名称标题一起使用,更改所选项目等。现在我被困住了,因为我不知道如何归档我下一步想做的事情。

当我点击抽屉中的某个项目时 - 例如,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 中除抽屉的 ListView 之外唯一的东西 的 xml 布局,这是一个占据屏幕所有空间的 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/

相关文章:

java - 在设备上安装签名的 apk(使用 libgdx)时出错

java - 根据 Spinner 1 中的选择动态更新 Spinner2

android - 如何在 React Native (Android)/Expo 项目中使用 FFmpeg 访问图像文件?

android - getActivity() 在 PreferenceFragment 中返回 null

react-native - 使用 react-native 抽屉实现侧边栏/汉堡菜单

cocoa - View 可以有抽屉吗?

android - 如何在 Android 中使用 ImageView 显示图像

android - 检测屏幕中的 fragment

java - Webview 无法在 fragment 中工作

android - 如何通过 Activity 绑定(bind)从抽屉标题布局中获取 View ?