在下面运行我的视图模型时我的应用程序崩溃
@HiltViewModel
class ReportViewModel @Inject internal constructor(
savedStateHandle: SavedStateHandle,
private val monthRepository: MonthRepository
) : ViewModel() {
//error in this line (monthId) says NullPointerException
private val monthId: Long = savedStateHandle.get<Long>(MONTH_ID_SAVED_STATE_KEY)!!
val report = monthRepository.getMonthData(monthId).asLiveData()
companion object {
private const val MONTH_ID_SAVED_STATE_KEY = "monthId"
}
}
错误是java.lang.NullPointerException
。我正在使用 safeArgs。请参阅下面的 ViewHolder。
inner class ViewHolderOne(var binding: ListMonthItemBinding) :
RecyclerView.ViewHolder(binding.root) {
init {
binding.root.setOnClickListener {
binding.month?.let { month ->
navigateToMonth(month, it)
}
}
}
private fun navigateToMonth(
month: Month,
view: View
) {
val direction =
MonthFragmentDirections.actionNavMonthsToNavReports(
month.identification
)
view.findNavController().navigate(direction)
}
fun bind(months: Month) {
binding.apply {
month = months
executePendingBindings()
}
}
}
当我开始导航到我的 detailFragment 时。应用程序开始崩溃说 NullPointerException。
下面的代码是我的 nav_graph
<fragment
android:id="@+id/nav_months"
android:name="com.appname.ui.report.MonthFragment"
android:label="@string/menu_months"
tools:layout="@layout/fragment_month" >
<action
android:id="@+id/action_nav_months_to_nav_reports"
app:destination="@id/nav_reports" />
</fragment>
<fragment
android:id="@+id/nav_reports"
android:name="com.appname.ui.report.ReportFragment"
android:label="@string/report" >
<argument
android:name="monthId"
app:argType="long" />
</fragment>
这是报告片段
@AndroidEntryPoint
class ReportFragment : Fragment() {
private val reportViewModel: ReportViewModel by viewModels()
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View {
val binding = DataBindingUtil.inflate<FragmentReportBinding>(
inflater,
R.layout.fragment_report,
container,
false
).apply {
viewmodel = reportViewModel
lifecycleOwner = viewLifecycleOwner
}
return binding.root
}
}
我参考了 Google 的 Sunflower App 的代码。但我想我错过了一些东西。
如何修复此崩溃?