任何人都可以帮助我了解导致此次崩溃的原因吗?
Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class android.widget.CheckedTextView
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance0(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:430)
Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 17: TypedValue{t=0x2/d=0x7f020060 a=-1}
at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:716)
我的仪器测试:
@Test
fun testOnBindViewHolder_setsClickEventForFriendItemView() {
val mockOnClickPersonItemDelegate: PersonListAdapter.OnClickPersonDelegate = mock()
personListAdapter = PersonListAdapter(mockOnClickPersonItemDelegate)
personListAdapter.addOne(getFakePerson())
val inflater: LayoutInflater = InstrumentationRegistry.getInstrumentation().context.getSystemService(Context.LAYOUT_INFLATER_SERVICE) as LayoutInflater
val itemView = inflater.inflate(R.layout.person_list_item, null)
val holder = personListAdapter.getViewHolder(itemView)
// verify that a click on the item calls the click event listener
personListAdapter.onBindViewHolder(holder, 0)
holder.itemView.performClick()
verify(mockOnClickPersonItemDelegate).onClickPersonWithId(ArgumentMatchers.anyString())
}
itemView
的视图XML膨胀导致此崩溃。但这并不是因为我在XML中定义或引用了一个维度。位于0x7f020060的缺失维度不是用户定义的;它是AppCompat主题的R.attr.dialogPreferredPadding
值。同样,我没有在XML中的任何地方引用CheckedTextView
。我试图想象为什么此视图无法在androidTest
上下文中运行,因为它可以在main
中。
答案 0 :(得分:0)
这里有同样的问题,我想我找到了解决方案。尝试用ContextThemeWrapper
包装用于创建充气机的上下文。这是Java中的示例:
final Context c = new ContextThemeWrapper(InstrumentationRegistry.getTargetContext(), R.style.Theme_AppCompat);
final LayoutInflater inflater = LayoutInflater.from(c);
您还可以使用您的应用程序自定义主题(我猜是从AppCompat主题扩展而来的,而不是R.style.Theme_AppCompat
),因此您可以膨胀包含在自定义主题中定义的自定义属性的布局。 / p>