【发布时间】:2019-07-30 14:41:29
【问题描述】:
我有一个问题,我应该使用什么来从 1 个托管多个片段的 Activity 导航。
目标是 1 个承载多个片段的 Activity。
我正在使用导航组件架构
我的目标是了解实现导航的最佳方式
目前实现的导航方式是这样的
class MainMenuActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main_menu)
}
override fun onSupportNavigateUp() = findNavController(R.id.nav_host_fragment).navigateUp()
}
然后在Fragment之间导航默认一个是这样的(从Fragment A到Fragment B
Fragment A : Fragment() {
onViewCreated(...){
btn.setOnClickListener{
findNavController.navigate(R.id.nextAction)
}
从片段 B 到片段 C
Fragment B : Fragment() {
onViewCreated(...){
btn.setOnClickListener{
findNavController.navigate(R.id.nextAction)
}
我的问题是,以这种方式在片段之间导航是否是一种好习惯?因为我觉得我在进行片段之间的导航,但不关心主容器 Activity。
我想做的是这样的
class MainMenuActivity : BaseActivity() {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main_menu)
}
override fun onSupportNavigateUp() = findNavController(R.id.nav_host_fragment).navigateUp()
fun navigateToFragment(id:Int){
findNavController.navigate(id)
}
}
然后从每个片段中调用它以前往所需的目的地
Fragment A : Fragment() {
onViewCreated(...){
btn.setOnClickListener{
requireActivity().navigateToFragment(R.id.nextAction)
}
拥有一个托管一堆片段的活动是否更好,还是第一种方式更好?
我认为这是我在片段中托管片段的第一种方式,这让我使用childFragmentManager 来获取这些片段的片段管理器。
而且还使得从 Activity 本身扩展某些方法变得更加困难。
谢谢
【问题讨论】:
-
你不需要那样实现。如果它工作正常,没问题。
-
这是什么逻辑? “如果它有效,请留在那里......”,问题是,如果您将从事 android 开发或成为一名工程师,您需要了解最佳实践并每次都改进您的代码。
-
好吧,我说的是导航组件。您提到的所有内容之间没有太大区别。这取决于您的编码风格。我没有看到更好的方法。
标签: android android-fragments kotlin android-navigation android-architecture-navigation