问题
I have no idea about this error. I got these mesaage from google developer console. Some devices like z3, htc m8 ,m9 can't execute my app. Could someone give me some hint about the error?
Stacktrace :
java.lang.RuntimeException: Unable to start activity ComponentInfo{package name/package name.SettingsActivity}: android.view.InflateException: Binary XML file line #31: Error inflating class com.android.internal.widget.ActionBarContainer
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2499)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2563)
at android.app.ActivityThread.access$800(ActivityThread.java:162)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1438)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:209)
at android.app.ActivityThread.main(ActivityThread.java:5900)
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:1005)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:800)
Caused by: android.view.InflateException: Binary XML file line #31: Error inflating class com.android.internal.widget.ActionBarContainer
at android.view.LayoutInflater.createView(LayoutInflater.java:633)
at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:743)
at android.view.LayoutInflater.rInflate(LayoutInflater.java:806)
at android.view.LayoutInflater.inflate(LayoutInflater.java:504)
at android.view.LayoutInflater.inflate(LayoutInflater.java:414)
at android.view.LayoutInflater.inflate(LayoutInflater.java:365)
at com.android.internal.policy.impl.PhoneWindow.generateLayout(PhoneWindow.java:3659)
at com.android.internal.policy.impl.PhoneWindow.installDecor(PhoneWindow.java:3755)
at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:403)
at android.app.Activity.setContentView(Activity.java:2174)
at android.preference.PreferenceActivity.onCreate(PreferenceActivity.java:553)
at pavkage name.SettingsActivity.onCreate(Unknown Source)
at android.app.Activity.performCreate(Activity.java:5981)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1124)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2452)
... 10 more
Caused by: java.lang.reflect.InvocationTargetException
at java.lang.reflect.Constructor.newInstance(Native Method)
at java.lang.reflect.Constructor.newInstance(Constructor.java:288)
at android.view.LayoutInflater.createView(LayoutInflater.java:607)
... 24 more
Caused by: java.lang.RuntimeException: Failed to resolve attribute at index 13
at android.content.res.TypedArray.getDrawable(TypedArray.java:747)
at android.view.View.<init>(View.java:3785)
at android.view.ViewGroup.<init>(ViewGroup.java:513)
at android.widget.FrameLayout.<init>(FrameLayout.java:128)
at android.widget.FrameLayout.<init>(FrameLayout.java:124)
at android.widget.FrameLayout.<init>(FrameLayout.java:119)
at com.android.internal.widget.ActionBarContainer.<init>(ActionBarContainer.java:61)
... 27 more
styles.xml
<!-- Base application theme. -->
<style name="AppTheme" parent="Theme.AppCompat.Light.DarkActionBar">
<!-- Customize your theme here. -->
<item name="colorPrimary">@color/colorPrimary</item>
<item name="colorPrimaryDark">@color/colorPrimaryDark</item>
<item name="colorAccent">@color/colorAccent</item>
</style>
<style name="AppTheme.NoActionBar">
<item name="windowActionBar">true</item>
<item name="windowNoTitle">true</item>
</style>
<style name="AppTheme.AppBarOverlay" parent="ThemeOverlay.AppCompat.Dark.ActionBar"/>
<style name="AppTheme.PopupOverlay" parent="ThemeOverlay.AppCompat.Light"/>
AndroidManifest.xml
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<activity
android:name="package name.SettingsActivity"
android:label="@string/app_name"
android:launchMode="singleTask"
android:theme="@style/AppTheme.AppBarOverlay">
<intent-filter>
<action android:name="android.intent.action.MAIN"/>
<category android:name="android.intent.category.LAUNCHER"/>
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.MANAGE_NETWORK_USAGE" />
<category android:name="android.intent.category.DEFAULT" />
</intent-filter>
</activity>
xml
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory android:title="@string/pref_general_category">
<SeekBarPreference
android:defaultValue="10"
android:key="@string/PrefResetWhistleIntervalKey"
android:summary="@string/pref_reset_whistle_interval"
android:title="@string/pref_title_reset_whistle_interval"/>
<SeekBarPreference
android:defaultValue="10"
android:key="@string/PrefWhistleAmountKey"
android:summary="@string/pref_whistle_count"
android:title="@string/pref_title_whistle_count"/>
<SeekBarPreference
android:key="@string/PrefVolumeKey"
android:summary="@string/pref_alarm_volume"
android:title="@string/pref_title_alarm_volume"/>
<SwitchPreference
android:defaultValue="false"
android:key="@string/PrefMediaPlayerLoopKey"
android:summary="@string/pref_mediaplay_loop"
android:title="@string/pref_title_mediaplay_loop"/>
<Preference
android:clickable="false"
android:editable="false"
android:enabled="true"
android:key="@string/PrefChooseAudioKey"
android:selectable="true"
android:summary=""
android:title="@string/pref_title_choose_media"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/pref_battery_save_category">
<ListPreference
android:defaultValue="@string/pref_sensitivity_default_value"
android:dialogTitle="@string/pref_title_sensitivity"
android:entries="@array/array_sensitivity_item"
android:entryValues="@array/array_sensitivity_value"
android:key="@string/PrefSensitivityKey"
android:summary="@string/pref_sensitivity"
android:title="@string/pref_title_sensitivity"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/pref_system_category">
<SwitchPreference
android:defaultValue="true"
android:key="@string/PrefEnableServiceKey"
android:summary="@string/pref_service_on_off"
android:title="@string/pref_title_service_on_off"/>
<SwitchPreference
android:defaultValue="true"
android:key="@string/PrefEnableBootServiceKey"
android:summary="@string/pref_start_service_ono_ff"
android:title="@string/pref_title_start_service_on_off"/>
</PreferenceCategory>
<PreferenceCategory android:title="@string/testMode">
<Preference
android:clickable="false"
android:editable="false"
android:enabled="true"
android:key="@string/PrefTestModeKey"
android:selectable="true"
android:summary="@string/pref_test_mode"
android:title="@string/pref_title_test_mode"/>
</PreferenceCategory>
</PreferenceScreen>
seekbarpreference taken from http://robobunny.com/blog_files/android_seekbar_preference/SeekBarPreference.java
回答1:
I had the same error, and here is how I dealt with it. In the styles.xml file, in the first "AppTheme" style put Base infront of Theme.AppCompat. So it would be "Base.Theme.AppCompat.Light.DarkActionBar".
After this, go to your "AndroidManifest" and in your activity do not use "AppBarOverlay". So it would be just "android:theme="@style/AppTheme".
Furthermore, in "AndroidManifest" remove "package name" from your activity name, and just use ".SettingsActivity".
If you have other activities then instead of defining AppTheme in each activity, just use android:parentActivityName=".SettingsActivity."
I know you want to have an action bar and removing AppBarOverlay could help. Let me know if it works.
回答2:
extend class with AppCompatActivity instead of Activity it will give you the action bar
来源:https://stackoverflow.com/questions/34567982/activitypreferencefragment-error-inflating-class-com-android-internal-widget