如何在两个片段目标之间传递数据?如果我点击导航控制器中的菜单?

莎拉

我正在尝试使用导航控制器。我有一个底部导航视图。位于我的MainActivity上,并使用以下代码启动:

class MainActivity : AppCompatActivity() {

    lateinit var navController : NavController
    lateinit var logoHeaderImageView : ImageView
    var toolbarMenu : Menu? = null


    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        logoHeaderImageView = findViewById(R.id.header_lakuin_image_view)

        navController = Navigation.findNavController(this,R.id.nav_main_host_fragment)



        setupBottomNavMenu(navController)
        setupActionBar(navController)



    }

    fun setupBottomNavMenu(navController: NavController) {
        NavigationUI.setupWithNavController(bottom_navigation_view,navController)
    }

    fun setupActionBar(navController: NavController) {
        setSupportActionBar(main_activity_toolbar)
        main_activity_toolbar.title = ""


        val appBarConfiguration = AppBarConfiguration(
            setOf(
                // set some destination as the top hierarchy destination, to make the up button doesn't show.
                R.id.destination_home,
                R.id.destination_order,
                R.id.destination_favourite,
                R.id.destination_cart,
                R.id.destination_profile

            ))

        NavigationUI.setupWithNavController(main_activity_toolbar,navController,appBarConfiguration)
    }


    override fun onCreateOptionsMenu(menu: Menu?): Boolean {
        menuInflater.inflate(R.menu.menu_main_toolbar, menu)
        toolbarMenu = menu
        return true
    }

    override fun onOptionsItemSelected(item: MenuItem): Boolean {
        return item.onNavDestinationSelected(navController) || super.onOptionsItemSelected(item)
    }




}

这是我底部导航视图的外观: 在此处输入图片说明

所以我想将数据从HomeFragment(目的地家庭)传递到OderFragment(目的地顺序)。我通常使用bundle或safeArgs传递数据,例如以下代码:

var bundle = bundleOf("amount" to amount)
view.findNavController().navigate(R.id.confirmationAction, bundle)

但我不知道在哪里放置的代码,如果我想从我的数据传递HomeFragmentOderFragment

伊恩汉尼巴拉克

使用时NavigationUI.setupWithNavController(bottom_navigation_view,navController)(或使用navigation-ui-ktxKotlin扩展名bottom_navigation_view.setupWithNavController(navController)),您不能将任何自定义参数传递给目的地-全局导航的重要部分在于,它们始终会将您带到处于相同状态的同一屏幕。

通常,您应该将诸如当前数量之类的数据与导航参数分开保存-无论是保存在持久数据库中,还是SharedPreferences或其他在进程死机后仍可保存的位置,即使重新启动用户,用户也可以继续执行其操作电话等

但是,如果必须为此使用“导航”参数,则可以提前(即,金额发生变化时)为目的地设置默认参数:

NavDestination orderDestination = navController.graph.findNode(R.id.destination_order)
orderDestination.addArgument("amount", NavArgument.Builder()
    .setType(NavType.FloatType)
    .setDefaultValue(amount)
    .build())

之后,默认情况下BottomNavigationView触发R.id.destination_order将自动包括该参数以及新amount值。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

在两个接口控制器之间传递数据

如何在两个视图控制器之间传递(变化的)变量?

在两个视图控制器之间导航

在选项卡控制器中的两个视图控制器之间传递数据

使用闭包在两个控制器之间传递数据

在Rails中的两个控制器之间传递数据

在两个视图控制器之间不断传递数据

使用“委托”在两个视图控制器之间传递数据:Objective-C

如何在Java Scene Builder上将两个参数作为XML传递给我的控制器类?

如何在不使用服务和 rootscope 的情况下在两个控制器之间共享数据?

在两个片段之间传递数据

如何在控制器中传递两个变量以进行查看(laravel 5.3)

如何在路由控制器中传递两个参数

如何在两个角度控制器的属性之间建立关系?

如何在组件中的两个控制器之间建立通信

如何在Ionic的控制器/视图之间传递数据?

将数据从故事板中的菜单选择传递到表视图控制器

在两个同时显示的视图控制器之间传递数据的最简单方法是什么?

如何使用具有两个具有不同模块的不同控制器的服务在不同模块之间传递数据?

如何在两个类之间传递数据?

使用 rootscope angular js 在两个控制器之间传递日期

在 iOS 中的两个控制器之间传递变量

如何在两个活动之间没有直接导航链接的情况下传递数据?

在两个以上的片段之间传递数据

使用回调在两个片段之间传递数据

在两个片段之间传递数据类

如何从导航控制器一次弹出两个视图?

如何将数据从视图控制器传递到导航控制器,然后再传递到另一个视图控制器?

XCode Swift:如果已将一个拆分视图控制器中的1个连接到另一个视图控制器,如何在两个视图控制器之间创建一个标签栏?