【发布时间】:2015-12-17 14:03:39
【问题描述】:
我已经实现了用于阅读书籍的 Android 应用程序。我的应用程序有两种模式 - day 和 night。
对于 day 模式,我使用的是主题,其父级设置为 @style/Theme.AppCompat.Light.NoActionBar。对于 night 模式,父级是 @style/Theme.AppCompat.NoActionBar。
在第一种模式下(day)一切正常。但是当用户将模式更改为 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.access$1100(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、三星 Galaxy S4、摩托罗拉 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,但它是一样的。
【问题讨论】:
-
我自己在使用默认(深色)主题时遇到了很多问题,您尝试过 android:theme="@style/ThemeOverlay.AppCompat.Dark" 吗?
-
@MarkusRubey 我正在使用工具栏,所以我想我不能使用这个主题。
-
如果您的活动专门扩展了 ActionBarActivity 并且主题是针对没有操作栏的活动,那么它可能会导致崩溃。通常,如果由于主题更改而丢失或丢失任何内容,则可能会发生崩溃。 AppCompatActivity 已被弃用,因此如果主题可能只支持新主题。
-
XML 的第 19 行是什么?
-
@Sepoto 请查看我更新的问题。我的活动从
AppCompatActivity扩展,没有ActionBar,因为我使用的是Toolbar。
标签: android android-spinner android-appcompat android-styles android-inflate