【问题标题】:Required argument "name" is missing and does not have an android:defaultValue缺少必需的参数“名称”并且没有 android:defaultValue
【发布时间】:2020-04-16 10:07:45
【问题描述】:

我的代码有问题,我试图在片段之间传递参数,但它给出了异常 java.lang.IllegalArgumentException: Required argument "name" is missing and does not have an android:defaultValue 运行时。我仍然是初学者,所以我无法确定问题出在哪里。

class ListNotesFragment : Fragment() {

    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {

        val binding = DataBindingUtil.inflate<FragmentListNotesBinding>(inflater, R.layout.fragment_list_notes, container, false)

        val application = requireNotNull(this.activity).application

        val args = ListNotesFragmentArgs.fromBundle(arguments!!).name

        val dataSource = NoteDatabase.getInstance(application).noteDatabaseDao

        val viewModelFactory = ListNoteViewModelFactory(args, dataSource)

        val listNoteViewModel = ViewModelProviders.of(this, viewModelFactory).get(ListNoteViewModel::class.java)

        binding.listNoteViewModel = listNoteViewModel

        binding.lifecycleOwner = this

        binding.addButton.setOnClickListener{
            this.findNavController().navigate(R.id.action_listNotesFragment_to_detailNoteFragment)
        }

        listNoteViewModel.navigateToDetailNoteFragment.observe(viewLifecycleOwner, Observer{
            it?.let {
                this.findNavController().navigate(ListNotesFragmentDirections
                    .actionListNotesFragmentToDetailNoteFragment(it.noteId))

                listNoteViewModel.doneNavigating()
            }
        })

        return binding.root
    }

}

【问题讨论】:

    标签: android kotlin android-architecture-navigation android-safe-args


    【解决方案1】:

    所以你的问题是这一行:

    val args = ListNotesFragmentArgs.fromBundle(arguments!!).name
    

    保护自己免受 null 影响的方法是在 nav_graph.xml 参数中设置 defaultValue,使其看起来像这样:

    <argument
        android:name="name"
        app:argType="string"
        app:nullable="true"
        android:defaultValue="@null"/>
    

    【讨论】:

    • 对我来说,如果我研究 crashlytics,它只适用于少数用户而不是所有用户?
    • 对我来说也是 crashlytics,这是因为一个用户两次没有得到这背后的确切原因,
    • 能否请您链接您的帖子,因为您所指的可能是另一种情况...
    猜你喜欢
    • 1970-01-01
    • 2019-05-23
    • 2021-10-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-05
    • 2018-10-28
    相关资源
    最近更新 更多