0

我正在开发一个 android 应用程序,该应用程序记录仓库中生产材料的消耗量。我正在使用 Androids UI Navigation 架构组件来处理应用程序内的导航。在每个片段中,我都使用相同的 onCreateView 函数:

override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    binding = DataBindingUtil.inflate(inflater, R.layout.fragment_layout, container, false)

    return inflater.inflate(R.layout.fragment_layout, container, false)
}

其中 fragment_layout 是当前 Fragments 布局的资源 id。

我现在的问题是,在一个片段中,对 DataBindingUtil.inflate 的调用导致了 InvocationTargetException。

我已经注释掉了完整的布局,以检查布局文件中是否存在一些错误。之后,我注释掉了片段内视图的所有逻辑。这一遍又一遍地导致了同样的异常。

我做的最后一个测试是将 onCreateView 中的行代码从

binding = DataBindingUtil.inflate(inflater, R.layout.consumption_fragment, container, false)

return binding.root

至:

return inflater.inflate(R.layout.fragment_layout, container, false)

在那之后,所有的问题都没有了。但是这个解决方案不适合我,因为我需要使用数据绑定。

这是相关布局文件的数据部分

<data>
    <import type="Field" />
    <import type="androidx.lifecycle.LiveData" />
    <import type="java.util.List" />
        <variable
            name="parcelNo"
            type="Field&lt;String>" />
        <variable
            name="piece"
            type="Field&lt;String>" />

        <variable
            name="parcels"
            type="LiveData&lt;List&lt;Consumption>>" />

        <variable
            name="parcel"
            type="LiveData&lt;Parcel>" />
    </data>

logcat 中显示的堆栈跟踪没有提供关于错误发生位置的太多信息。

java.lang.RuntimeException: java.lang.reflect.InvocationTargetException
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)
4

0 回答 0