必需参数";名称“;缺少,并且没有android:defaultValue

必需参数";名称“;缺少,并且没有android:defaultValue,android,kotlin,android-architecture-navigation,android-safe-args,Android,Kotlin,Android Architecture Navigation,Android Safe Args,我的代码有问题,我试图在片段之间传递参数,但它给出了一个异常 java.lang.IllegalArgumentException:缺少必需的参数“name”,并且在运行时没有android:defaultValue。我还是个初学者,所以我真的不知道问题出在哪里 class ListNotesFragment : Fragment() { override fun onCreateView( inflater: LayoutInflater, container: Vi

我的代码有问题,我试图在片段之间传递参数,但它给出了一个异常
java.lang.IllegalArgumentException:缺少必需的参数“name”,并且在运行时没有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
    }

}
class ListNotesFragment:Fragment(){
覆盖创建视图(
充气器:布局充气器,容器:视图组?,
savedInstanceState:捆绑?
):查看{
val binding=DataBindingUtil.充气(充气器,R.layout.fragment\u列表\u注释,容器,false)
val application=requireNotNull(this.activity).application
val args=ListNotesFragmentArgs.fromBundle(参数!!).name
val dataSource=NoteDatabase.getInstance(应用程序).noteDatabaseDao
val viewModelFactory=ListNoteViewModelFactory(参数,数据源)
val listNoteViewModel=ViewModelProviders.of(这是viewModelFactory).get(listNoteViewModel::class.java)
binding.listNoteViewModel=listNoteViewModel
binding.lifecycleOwner=此
binding.addButton.setOnClickListener{
this.findNavController().navigate(R.id.action_listNotesFragment_到_detailNoteFragment)
}
listNoteViewModel.navigateToDetailNoteFragment.observe(viewLifecycleOwner,Observer{
是吗?让我来{
this.findNavController().navigate(ListNotesFragmentDirections
.actionListNotesFragmentToDetailNoteFragment(it.noteId))
listNoteViewModel.doneNavigating()
}
})
返回binding.root
}
}

所以您的问题是这一行:

val args = ListNotesFragmentArgs.fromBundle(arguments!!).name
保护自己不受null影响的方法是在nav_graph.xml参数中设置a,使其看起来像这样:

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


对于我来说,如果我研究crashlytics,它只面向少数用户,而不是所有用户?对于我来说,crashlytics,它面向一个用户,两次都没有得到背后的确切原因,你能链接你的帖子吗,因为你所指的可能是另一种情况。。。