当前位置: 首页 > 知识库问答 >
问题:

改变片段(?)使用导航抽屉的布局或活动

华俊贤
2023-03-14

我想用新的导航抽屉。我遵循了指导原则,并设法让它处理部分名称、选定项目的标题更改等问题。现在我陷入了困境,因为我不知道如何归档我下一步要做的事情。

例如,当我点击抽屉里的一个项目时,我想让它把我带到一个屏幕上,在那里我有我为特定屏幕在特定布局中创建的所有东西。这都是静态的东西,比如TextView和图像,所以我不需要对它们做任何事情。

我是否应该为抽屉的列表视图上的每个项目创建一个活动和一个布局,并(不知如何)在onItemSelected()中启动活动?或者,我可以在每次单击列表视图中的某个项目时动态创建一个片段,然后说

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中。有没有更优雅的方法来实现我的目标,而不是使用开关打开位置,使用setContentView(),修改要嵌套在抽屉布局中的任何布局?(我甚至不知道这是否可能——可能不会,因为有相同的ID)

@斯特凡编辑了这篇评论,因为评论回复中没有足够的空间

谢谢斯特凡,谷歌的例子让我更加困惑。我相信我可能已经读了10k遍的片段有一点偷偷摸摸的地方,但是我的大脑拒绝吸收。据我所知,在谷歌的例子中,当你点击抽屉中的一个项目时,它确实会创建一个新的片段,并使这个片段取代抽屉中除了抽屉的ListView之外的唯一东西,在Main Active的xml布局中,它是一个占用屏幕所有空间的FrameLayout。然后所有片段所做的就是显示一个行星ImageView,因此代码对片段说,根据项目单击的ListView数组位置更改该图像。


共有2个答案

岳阳飙
2023-03-14

这真的很困惑,我敢肯定Android工程师错过了一些东西!

例如,在iOS上,您可以轻松地在windows上拥有多个“UIViewController”,并为所有应用程序提供相同的菜单(或UIABViewController)。这是正常的行为,没有231个关于stackoverflow的问题^^

但在Android系统上,我发现没有人有一个干净的解决方案可以在活动中使用NavDrawer或Tab-(

我将选择单个活动和几个片段的方法,让我们看看!

施振海
2023-03-14

好了,这里有很多入门问题,还有一个还很新,还没有定义。

首先,你只需做一件事就可以开始一项新的活动;

this.startActivity(new Intent(this, ActivityClassName.class)); 

从任何活动(或片段,有点改变为'this'='this.get活动()')

无论使用活动还是片段,都必须创建一个类和一个属于它的xml视图。你可以建立一些通用的东西,但大多数时候你不想这样做。

关于你是否应该启动一个新的活动,或者在点击抽屉后切换片段的问题,我认为这仍然很难说。

一般来说,刚开始一项新的活动是最容易的,也是最“应该”的。作为一项活动,它应该相当于一个可能包含多个部分(可能是片段)的可见屏幕。

然而,在实践中,你会看到越来越多的谷歌应用(谷歌音乐、Play store、新Gmail等)他们似乎放弃了这个想法,使用了一个只会不断切换片段的活动。

从技术上讲,这种类型将活动置于应用程序角色中,这可能会带来额外的困难。然而,在视觉上,转换要平滑得多,因为每个例子中,操作栏保持不变,就像谷歌喜欢的“锚”一样。

然而,他们似乎在他们的教程中切换片段,而不是开始活动,所以也许你应该尝试这种方式,并处于“新的做事方式”的流血边缘:)

http://developer.android.com/training/implementing-navigation/nav-drawer.html

 类似资料:
  • 我有一个主活动启动导航抽屉。 也有一些片段。 我需要从片段内部更改导航抽屉列表的标题。 我尝试了这个内部片段: 但是到目前为止还没有运气。这是我的主要活动: 在主活动类中使用相同的方法有效,但在片段中无效。我不知道如何更新字符串并通知抽屉此更改!

  • 问题内容: 我知道这些类型的问题已经在这里,但仍然找不到这个问题的答案: 我已经创建了一个应用程序,并使用了由该应用程序自动创建的导航抽屉(AndroidStudio) 这是我所拥有的: 还有更多: 我想使用导航抽屉中的按钮显示另一个片段。我想使用此代码,所以请不要向我发送任何制作自己的抽屉的指南或教程。 现在的问题是,我该怎么放 ,并在情况下,我想打开另一个片段?谢谢。 还有一个问题: 如何添加

  • 我有一个活动a,一个列表片段P和两个片段Q和R。 当应用程序启动时,会创建一个,加载P。根据用户点击的内容,它被Q或R取代。 现在,通过参考本教程,我实现了一个导航抽屉,向用户显示某些项目。然而,由于我在活动中实现了导航抽屉,它显示了所有片段。我希望它只对P可用。 (非常类似于谷歌Gmail应用程序。当用户在主屏幕上时,抽屉就出现了。当用户点击打开电子邮件时,抽屉就会切换到后退按钮) 我不知道如何

  • 我已经从Android官方网站下载了示例项目http://developer.android.com/training/implementing-navigation/nav-drawer.html.我试图了解导航抽屉是如何工作的。所以,我有一个疑问,他们从左侧菜单中为每个项目调用一个片段。在我的项目中,我有一个大活动,我试图通过这个片段调用它: 公共类HomeFragment扩展了片段{ } 但