Android 使用导航组件检查用户是否来自kotlin中的特定片段

Android 使用导航组件检查用户是否来自kotlin中的特定片段,android,kotlin,android-fragments,navigation,android-architecture-navigation,Android,Kotlin,Android Fragments,Navigation,Android Architecture Navigation,我有两个片段,MeasurementFragment和AddMeasurementFragment。用户将首先通过第一个片段并单击一个按钮,然后转到第二个片段,然后填写表单,并在按下按钮时返回第一个片段。然后,来自第二个片段的文本将显示在第一个片段上 这是我正在使用的一段代码 private val args: MeasurementsFragmentArgs by navArgs() override fun onViewCreated(view: View, savedInstan

我有两个片段,MeasurementFragment和AddMeasurementFragment。用户将首先通过第一个片段并单击一个按钮,然后转到第二个片段,然后填写表单,并在按下按钮时返回第一个片段。然后,来自第二个片段的文本将显示在第一个片段上

这是我正在使用的一段代码

private  val args: MeasurementsFragmentArgs by navArgs()
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        /*Initialize Views*/

        addMeasurementFab = binding.clientMeasurementFragmentAddMeasurementFab
        addMeasurementFab.setOnClickListener {
            findNavController().navigate(R.id.addMeasurementFragment)
        }

        if (args != null) {
            binding.measurementsFragmentTestingTextView.text =
                args.dressMeasurementModel.measurementName
            addMeasurementFab = binding.clientMeasurementFragmentAddMeasurementFab
        }
    }

这就是我在代码中遇到的错误

2021-06-08 17:45:48.958 6894-6894/com.decagonhq.clads E/AndroidRuntime: FATAL EXCEPTION: main
    Process: com.decagonhq.clads, PID: 6894
    java.lang.IllegalStateException: Fragment MeasurementsFragment{b497b26} (7f2ac57b-72b8-4dd0-a3e6-32c78d76e934 tag=f1) has null arguments


请告诉我如何在第一次检查args是否为null?

您必须手动填充args,而不是使用navArgs的委托属性

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View {
    val args = arguments
    if (args != null) {
        val measurementArgs = MeasurementsFragmentArgs.fromBundle(args)
        // parse measurementArgs
    }
    // rest of function follows
}

你可以考虑使用一个作用于活动的VIEW模型来保存你想要在片段之间共享的数据。

你使用安全ARG来发送数据还是返回正常的参数?我用安全的ARG发送它@ ZainCan。你显示了你发送片段数据的部分,听起来好像你没有使用API?您不专门为此使用API有什么原因吗?