片段测试错误:android.view.InflateException:二进制XML文件第16行:二进制XML文件第16行:错误夸大类<unknown>

我正在按照以下说明测试片段:https://developer.android.com/training/basics/fragments/testing

但是,从测试中调用launchFragmentInContainer时遇到以下崩溃。

Stacktrace:

android.view.InflateException: Binary XML file line #16: Binary XML file line #16: Error inflating class <unknown>

Caused by: android.view.InflateException: Binary XML file line #16: Error inflating class <unknown>
Caused by: java.lang.reflect.invocationTargetException
at sun.reflect.NativeConstructoraccessorImpl.newInstance0(Native Method)
...
at android.view.LayoutInflater.$$robo$$android_view_LayoutInflater$createView(LayoutInflater.java:647)
...
at com.myapp.poll.PollHomeFragment.onCreateView(PollHomeFragment.kt:31)
...
Caused by: java.lang.UnsupportedOperationException: Failed to resolve attribute at index 13: TypedValue{t=0x2/d=0x7f0301b1 a=-1}
at android.content.res.TypedArray.getDrawableForDensity(TypedArray.java:946)
at android.content.res.TypedArray.getDrawable(TypedArray.java:930)
at android.view.View.__constructor__(View.java:5010)
at android.view.View.<init>(View.java)
at android.widget.TextView.<init>(TextView.java)
...
at com.myapp.poll.PollHomeFragment.onCreateView(PollHomeFragment.kt:31)

这是布局:

<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:gravity="center"
android:orientation="vertical"
tools:context=".poll.Pollactivity">

<TextView
    android:id="@+id/tvEmail"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    tools:text="asdf@asdf.com" />

<TextView                      <!-- This is line 16 -->
    android:id="@+id/tvViewPoll"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/selectableItemBackground"
    android:gravity="center"
    android:minHeight="48dp"
    android:text="View Poll" />

<TextView
    android:id="@+id/tvCreatePoll"
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:background="?attr/selectableItemBackground"
    android:gravity="center"
    android:minHeight="48dp"
    android:text="Create Poll" />

smazhe 回答:片段测试错误:android.view.InflateException:二进制XML文件第16行:二进制XML文件第16行:错误夸大类<unknown>

在 Java 中,还必须将主题传递给 FragmentScenario。否则 std::string str = "I have $(xb) books and $(cs) pens"; std::regex rgx("\\$\\(([^)]*)\\)"); for (auto pos = std::sregex_iterator(str.begin(),str.end(),rgx),end = std::sregex_iterator(); pos != end; ++pos) { const std::smatch& match = *pos; std::cout << match[1] << std::endl; } 不会知道当前的主题,最终会抱怨应该设置一个 Fragment 主题......

AppCompat
,

好吧,从基于堆栈跟踪的有根据的猜测中,我尝试删除android:background="?attr/selectableItemBackground",从而解决了该问题。

似乎?attr/selectableItemBackground与FragmentScenario不兼容,或者这是一个框架错误。

我在问题跟踪器上提交了一个错误:https://issuetracker.google.com/issues/144629519

从Google更新:

  

状态:无法解决(预期行为)默认主题没有   应用程序定义的属性?attr / selectableItemBackground(作为Fragment   与AppCompat,MDC等无关)

     

听起来您应该将正确的主题传递给   FragmentScenario:

launchFragmentInContainer<PollHomeFragment>(themeResId = R.style.Theme_YourTheme)
,

对我来说,使用“android:?attr/selectableItemBackground”代替,解决了问题

本文链接:https://www.f2er.com/3085510.html

大家都在问