必需参数";名称“;缺少,并且没有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,它面向一个用户,两次都没有得到背后的确切原因,你能链接你的帖子吗,因为你所指的可能是另一种情况。。。