将 Bundle 参数传递给片段并随后使参数无效

问题描述 投票:0回答:1

我的片段有两个入口点:一个没有传递 Bundle,第二个则传递带有参数的 Bundle。我注意到,一旦我向它传递了一个参数,该片段就会保留该参数,并且当我导航到该片段而不传递参数时,该参数仍然存在。

我尝试将参数设置为空:

    barcode = NO_BARCODE
    arguments?.let {
        barcode = it.getString(SaleFragment.BARCODE, NO_BARCODE)
        createNewDbItemDialog().show()
        arguments = null
    }

然而,这会产生不良的副作用,即该片段将不再接收任何参数,即使我使用参数导航到它:

            findNavController(requireActivity(), R.id.nav_host_fragment)
                .navigate(
                    R.id.products_fragment,
                    Bundle().apply { putString(BARCODE, barcode) },
                    NavOptions.Builder()
                        .setPopUpTo(R.id.sale_fragment, inclusive = false, saveState = true)
                        .setRestoreState(true)
                        .build()
                )

不再收到条形码参数。仅第一次,之后参数设置为 null。

如何在片段中可靠地区分导航到片段时是否传递了参数?

android android-fragments android-navigation android-bundle
1个回答
0
投票

删除特定参数:

arguments?.remove(SaleFragment.BARCODE)
© www.soinside.com 2019 - 2024. All rights reserved.