Android导航抽屉:碎片与活动

Android导航抽屉:碎片与活动,android,android-activity,android-fragments,navigation-drawer,Android,Android Activity,Android Fragments,Navigation Drawer,在阅读了关于Fragment和Activity的文档和讨论之后,我想我已经把情况弄清楚了 活动应该为用户提供一个屏幕,用户可以在其中工作。导航到其他屏幕通常会破坏活动 片段应该提供很少或单一的功能组件,这些组件可以在活动中再次使用。片段的内容应该彼此独立工作,因此可以在多个活动中重用 虽然这一切似乎都有道理,但有一件事我不明白: 如果您创建了一个新的Android应用程序,并选择了创建Android导航抽屉应用程序的选项,为什么导航抽屉会使用片段来显示,Android Studio中用于创建导航

在阅读了关于Fragment和Activity的文档和讨论之后,我想我已经把情况弄清楚了

活动应该为用户提供一个屏幕,用户可以在其中工作。导航到其他屏幕通常会破坏活动

片段应该提供很少或单一的功能组件,这些组件可以在活动中再次使用。片段的内容应该彼此独立工作,因此可以在多个活动中重用

虽然这一切似乎都有道理,但有一件事我不明白:


如果您创建了一个新的Android应用程序,并选择了创建Android导航抽屉应用程序的选项,为什么导航抽屉会使用片段来显示,Android Studio中用于创建导航抽屉的默认模板不是活动的?

而是为您提供了一个带有容器布局的活动,其中包含您将使用的所有片段。该活动还处理导航事件和初始化方法,因此它与Android文档中的说法并不矛盾。你甚至可以在单独的活动中重复使用你的片段。

我同意@dustendrob的说法,但我可以添加一些东西

碎片是显而易见的答案,这是有原因的。 导航抽屉必须进行一项必须处理的活动。如果我们按照正常方式操作,当您按下导航抽屉项时,它必须更改活动的内容并在其上添加一个片段。在这种情况下,您可以再次按活动中的导航抽屉来再次更改片段


如果我们考虑多个活动的情况,那就意味着你必须选择一个处理导航抽屉的活动,每次你想改变活动,或者为每个活动创建多个句柄时调用它。

他们建议使用片段而不是很多活动。基本上,导航抽屉中的每一项都比另一项更可能具有完全不同的功能?此外,片段经常用作活动的一部分。那么为什么要使用片段作为全屏?我不认为你可以将一个平滑的滑动抽屉作为一个活动来重叠其他活动实际上,创建项目可以让主活动从ActionBarActivity扩展并处理导航栏操作。但我明白你的意思。NavigationDrawer活动本身包含活动通常不包含的片段。可能是为了“保留”NavigationDrawer,而不是每次从该抽屉中选择项目时都重新加载它。