Android 使用导航组件检查用户是否来自kotlin中的特定片段
我有两个片段,MeasurementFragment和AddMeasurementFragment。用户将首先通过第一个片段并单击一个按钮,然后转到第二个片段,然后填写表单,并在按下按钮时返回第一个片段。然后,来自第二个片段的文本将显示在第一个片段上 这是我正在使用的一段代码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
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有什么原因吗?