Spinner - 使用 AppCompat 时会引发异常

Spinner - inflate exception when using AppCompat

我已经实现了 Android 读书申请。我的应用程序有两种模式 - daynight

对于 day 模式,我使用主题,其父级设置为 @style/Theme.AppCompat.Light.NoActionBar。对于 night 模式,父级是 @style/Theme.AppCompat.NoActionBar.

在第一种模式下()一切正常。但是当用户将模式更改为 night 时会出现问题。我的 Spinner 有问题,它位于我的片段中。将模式更改为 night 后,我立即看到以下异常:

java.lang.RuntimeException: Unable to start activity ComponentInfo{cz.company.media/cz.comapy.reader.activity.reader.ReadingActivity}: android.view.InflateException: Binary XML file line #19: Error inflating class <unknown>
     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3119)
     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3218)
     at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:5111)
     at android.app.ActivityThread.access00(ActivityThread.java:198)
     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1682)
     at android.os.Handler.dispatchMessage(Handler.java:102)
     at android.os.Looper.loop(Looper.java:145)
     at android.app.ActivityThread.main(ActivityThread.java:6837)
     at java.lang.reflect.Method.invoke(Native Method)
     at java.lang.reflect.Method.invoke(Method.java:372)
     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1404)
     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1199)
  Caused by: android.view.InflateException: Binary XML file line #19: Error inflating class <unknown>
     at android.view.LayoutInflater.createView(LayoutInflater.java:640)
     at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:750)
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:813)
     at android.view.LayoutInflater.rInflate(LayoutInflater.java:821)
     at android.view.LayoutInflater.inflate(LayoutInflater.java:511)
     at android.view.LayoutInflater.inflate(LayoutInflater.java:415)
     at android.view.LayoutInflater.inflate(LayoutInflater.java:366)

我发现第 19 行的布局中有一个 Spinner。我的目标是 SDK 版本 22。我的所有活动都从 AppCompatActivity 扩展,我的所有对话框都从 AppCompatDialogFragment。我也试过把Spinner改成AppCompatSpinner,但是没有效果。

而且很奇怪,我只在 Android 5.1.1 的三星 Galaxy S6 设备上发生过这种情况。

我在 Nexus 5、Samsung Galaxy S4、Motorola Xoom、Xperia Z2 平板电脑等其他一些设备上对其进行了测试,它运行得非常好。

有没有人知道,哪里出了问题?

更新

我的 xml 文件中的第 19 行如下:

<android.support.v7.widget.AppCompatSpinner [this is line 19]
        android:id="@+id/spinner_display_settings_motif"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:entries="@array/display_setting_motif_types"/>

我也试过用经典的Spinner,但都是一样的。

尝试检查一下,如果您的风格/主题中没有:

<item name="android:src">something</item>

这可能会导致此类问题。