我目前正在学习新的 Android导航架构组件( https://developer.android.com/topic/libraries/architecture/navigation/).

我有点混淆它的动机和概念,这是我的不确定性:

> Android导航架构组件是否旨在消除在单个应用程序中使用多个Activity的需要?这意味着,整个应用程序只需要一个单一活动,所有其他页面将是片段?
>在应用程序中使用多个活动,但同时使用Android导航架构组件导航片段实际上违反了Android导航架构组件的目的吗?

问题2的示例场景:

解决方法

理论上,Navigation库支持您可能想要使用的任何体系结构.开箱即用它可以将活动和碎片作为导航目的地处理,但您可以在 implementing your own Navigator之前插入自己的解决方案(例如,参见 this article).

但是,从Google I/O talk on Navigation引用/转述:

What is my Activity actually meant to do?

Right Now,some apps are very Activity-heavy,some are Fragment-heavy,or completely in a different system. We’re moving towards a model where the Activity is more just an entry point into your app,rather than it being the owner of the content of your app. It’s actually just going to store global state,for example global navigation like a navigation drawer or the bottom bar.

所以谷歌确实建议你的应用只有几个活动,因为你只需要它们作为入口点.例如,您可以使用从启动器打开的另一个,以及通过深层链接打开的另一个.之后,当您的应用程序启动时,您可以使用Fragments完成其中的所有其他操作.

总结并直接回答您的两个问题:

>导航架构组件本身并不是“旨在消除使用多个活动的需要”,而是谷歌建议您在使用它时所做的事情.
>您绝对可以使用多个活动和多个碎片混合在一起.如果您愿意,您甚至可以使用纯粹基于视图的导航的单个活动.全取决于你.如果您发现导航库与您构建应用程序的方式结合使用,请使用它.

对于自定义目标,库的工具可能不是那么好(例如,可视化编辑器可能暂时只支持活动和片段),但您可以从代码中使用它.

Android导航架构组件 – 导航架构组件是否仅用于单个活动?的更多相关文章

  1. ios – Xcode 9架构x86_64的未定义符号

    先谢谢你的帮助.解决方法陷入类似的问题.只需在此处发布,以防它可以帮助任何人.在我们的应用程序的Objective-c类B中使用来自框架的类AbcService.从Xcode8/Swift3升级到Xcode9/Swift4后,由于未定义的符号,它无法为发布配置构建存档链接期间此类的错误:奇怪的是,它可以存档调试配置,并在模拟器中运行.花了差不多1天才找出根本原因:框架中的Swift类AbcService缺少一个公共修饰符.

  2. ios – Xcode 7.1 PrototypeTools链接器错误(仅限模拟器)

    我正在尝试使用Xcode7.1在iOS模拟器中运行我的应用程序,但我收到链接器错误.这是错误:clang:错误:链接器命令失败,退出代码为1这似乎是一个新问题,因为我在升级到新的Xcode之前没有它.我在Google上搜索过,但是这个问题几乎没有相关主题.有趣的是,该应用程序在设备上运行良好.我已经尝试重置模拟器并再次清洁/建造,但两者都没有奏效.有没有其他人遇到过这个问题,你能提供什么建议吗?

  3. xcode – 这是什么意思:架构的未定义符号x86_64“_main”

    在Xcode上构建我的应用程序时,我不断收到错误:我的代码没有错误,错误是奇怪的错误,我做的任何事情都无法解决.我不认为该代码与问题相关,因为它在错误中未被引用.这是错误的屏幕截图.解决方法链接器无法在主swift入口点的链接过程中找到任何文件.这可能是由于文件在项目中根本不存在,或者它存在但尚未包含在编译或链接构建阶段.在Swift中,主要的快速入口点在主要的SWF模块中定义,或者在AppDel

  4. ios – 当架构设置为64位时,图像不显示

    任何线索?

  5. iOS,ld:framework没有找到适用于架构arm64的GoogleMaps

    Podfile看起来像这个Cocoapodsv1.0beta6):解决方法更新请检查您是否在架构中具有相同的构建设置,并仅构建活动体系结构中的目标键你的podfile应该是这样的在您启动ProjectTest目标之前结束项目目标,也是为什么添加继承!

  6. ios – Zbar SDK – 缺少必需的架构x86_64

    在最近的Xcode5.1中,我在构建应用程序时遇到了一个问题.编译失败,出现“未定义的架构x86_64符号”错误.我使用有效架构构建我的项目:armv7,armv7s和arm64.在切换到最新的环境(Xcode)后,我在同一个架构中重新构建了libzbar.a库(我已经根据在LinkerErrorinXcode-5处找到的解决方案)也许有人也有同样的问题,最后他解决了,请分享解决方案:)解决方法我

  7. ios – Appstore FailureNo架构在二进制文件中. Lipo未能检测到bundle可执行文件中的任何架构.“在SoftwareAssets / SoftwareAsset

    嗨,我刚刚尝试将我的应用程式上传到应用程式商店,但失败了.****解决方法嗨,我很高兴我找到了答案.问题实际上是在info.plist中的“Productname”.在我的第一个版本是不同的.

  8. Xcode 8警告:没有规则处理类型为net.daringfireball.markdown的架构x86_64的文件

    我在Xcode8中得到上述警告,用于我的可可卡源源码中的CHANGELOG.md文件.如何清除?解决方法>选择ProjectNavigator>选择你的项目>选择您的目标>选择构建阶段>移动文件,您不希望编译器从编译源处理以复制捆绑资源

  9. iOS可用架构问题

    我对iOS构建设置中可用的体系结构有点困惑.我发现有4种类型:>i386>armv6>armv7>armv7s.我知道i386用于模拟器,armv6用于iOS设备.但我对armv7和armv7s感到困惑.1)armv7和armv7s有什么区别?2)基于armv7和armv7s架构的应用程序是否支持较旧的iOS版本?

  10. ios – ld:xx架构armv7 Xcode项目的重复符号

    大家好我有一个Xcode项目,每次我尝试构建项目时都会给我这个错误:ld:xx架构armv7Xcode项目的重复符号clang:错误:链接器命令失败,退出代码1…我已经google了,大多数解决方案说要摆脱在中的重复文件构建阶段–>编译项目的资源部分或在某些文件中将导入.m更改为.h.问题是编译资源列表甚至没有排序,我甚至不知道要修复哪些文件,因为我的项目中有很多文件.关于如何清理它的任何建议?

随机推荐

  1. bluetooth-lowenergy – Altbeacon库无法在Android 5.0上运行

    昨天我在Nexus4上获得了Android5.0的更新,并且altbeacon库停止了检测信标.似乎在监视和测距时,didEnterRegion和didRangeBeaconsInRegion都没有被调用.即使RadiusNetworks的Locate应用程序现在表现不同,一旦检测到信标的值,它们就不再得到更新,并且通常看起来好像信标超出了范围.我注意到的一点是,现在在logcat中出现以下行“B

  2. android – react-native动态更改响应者

    我正在使用react-native进行Android开发.我有一个视图,如果用户长按,我想显示一个可以拖动的动画视图.我可以使用PanResponder实现这一点,它工作正常.但我想要做的是当用户长按时,用户应该能够继续相同的触摸/按下并拖动新显示的Animated.View.如果您熟悉Google云端硬盘应用,则它具有类似的功能.当用户长按列表中的任何项目时,它会显示可拖动的项目.用户可以直接拖

  3. android – 是否有可能通过使用与最初使用的证书不同的证书对其进行签名来发布更新的应用程序

    是否可以通过使用与最初使用的证书不同的证书进行签名来发布Android应用程序的更新?我知道当我们尝试将这样的构建上传到市场时,它通常会给出错误消息.但有没有任何出路,比如将其标记为主要版本,指定市场中的某个地方?解决方法不,你不能这样做.证书是一种工具,可确保您是首次上传应用程序的人.所以总是备份密钥库!

  4. 如何检测Android中是否存在麦克风?

    ..所以我想在让用户访问语音输入功能之前检测麦克风是否存在.如何检测设备上是否有麦克风.谢谢.解决方法AndroidAPI参考:hasSystemFeature

  5. Android – 调用GONE然后VISIBLE使视图显示在错误的位置

    我有两个视图,A和B,视图A在视图B上方.当我以编程方式将视图A设置为GONE时,它将消失,并且它正下方的视图将转到视图A的位置.但是,当我再次将相同的视图设置为VISIBLE时,它会在视图B上显示.我不希望这样.我希望视图B回到原来的位置,这是我认为会发生的事情.我怎样才能做到这一点?编辑–代码}这里是XML:解决方法您可以尝试将两个视图放在RelativeLayout中并相对于彼此设置它们的位置.

  6. android – 获得一首歌的流派

    我如何阅读与歌曲相关的流派?我可以读这首歌,但是如何抓住这首歌的流派,它存放在哪里?解决方法检查此代码:

  7. android – 使用textShadow折叠工具栏

    我有一个折叠工具栏的问题,在展开状态我想在文本下面有一个模糊的阴影,我使用这段代码:用:我可以更改textColor,它可以工作,但阴影不起作用.我为阴影尝试了很多不同的值.是否可以为折叠文本投射阴影?

  8. android – 重用arm共享库

    我已经建立了armarm共享库.我有兴趣重用一个函数.我想调用该函数并获得返回值.有可能做这样的事吗?我没有任何头文件.我试过这个Android.mk,我把libtest.so放在/jni和/libs/armeabi,/lib/armeabi中.此时我的cpp文件编译,但现在是什么?我从objdump知道它的名字编辑:我试图用这个android.mk从hello-jni示例中添加prebuild库:它工作,但libtest.so相同的代码显示以下错误(启动时)libtest.so存在于libhello-j

  9. android – 为NumberPicker捕获键盘’Done’

    我有一个AlertDialog只有一些文本,一个NumberPicker,一个OK和一个取消.(我知道,这个对话框还没有做它应该保留暂停和恢复状态的事情.)我想在软键盘或其他IME上执行“完成”操作来关闭对话框,就像按下了“OK”一样,因为只有一个小部件可以编辑.看起来处理IME“Done”的最佳方法通常是在TextView上使用setonEditorActionListener.但我没有任何Te

  10. android – 想要在调用WebChromeClient#onCreateWindow时知道目标URL

    当我点击一个带有target=“_blank”属性的超链接时,会调用WebChromeClient#onCreateWindow,但我找不到新的窗口将打开的新方法?主页url是我唯一能知道的东西?我想根据目标网址更改应用行为.任何帮助表示赞赏,谢谢!

返回
顶部