试图解决此错误,该错误显示Google Play崩溃:
android.content.res.Resources$NotFoundException
com.superswell.finde.unterschiede.ButtonCustom.AppCompatButtonCustom.<init>
它发生在Android版本6(api 23)或更低版本上。我不认为它总是会发生
在LevelsActivity中实现了3个按钮 返回,速率和设置添加了一个示例。
检查了按钮的png,它们在所有尺寸的文件夹中。
回溯:
android.content.res.Resources $ NotFoundException
com.superswell.finde.unterschiede.ButtonCustom.AppCompatButtonCustom.<init>
java.lang.RuntimeException:
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2576)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2658)
...
原因:android.view.InflateException:
at android.view.LayoutInflater.inflate (LayoutInflater.java:539)
at android.view.LayoutInflater.inflate (LayoutInflater.java:423)
at android.view.LayoutInflater.inflate (LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImpl.addContentView (AppCompatDelegateImpl.java)
or .checkCloseActionMenu (AppCompatDelegateImpl.java)
...
(AppCompatDelegateImpl.java)
at android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java)
at <b>com.superswell.finde.unterschiede.LevelsActivity.onCreate (LevelsActivity.java)</b>
...
原因:android.view.InflateException:
at android.view.LayoutInflater.createView (LayoutInflater.java:645)
at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:764)
...
原因:java.lang.reflect.InvocationTargetException:
at java.lang.reflect.Constructor.newInstance (Constructor.java)
at android.view.LayoutInflater.createView (LayoutInflater.java:619)
at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:764)
at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:704)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:835)
at android.view.LayoutInflater.rInflateChildren (LayoutInflater.java:798)
at android.view.LayoutInflater.inflate (LayoutInflater.java:515)
at android.view.LayoutInflater.inflate (LayoutInflater.java:423)
at android.view.LayoutInflater.inflate (LayoutInflater.java:374)
at android.support.v7.app.AppCompatDelegateImpl.addContentView (AppCompatDelegateImpl.java)
or .checkCloseActionMenu (AppCompatDelegateImpl.java)
or .getMenuInflater (AppCompatDelegateImpl.java)
or .initializePanelMenu (AppCompatDelegateImpl.java)
or .onKeyUp (AppCompatDelegateImpl.java)
or .onPostCreate (AppCompatDelegateImpl.java)
or .preparePanel (AppCompatDelegateImpl.java)
or .setContentView (AppCompatDelegateImpl.java)
or .startSupportActionModeFromWindow (AppCompatDelegateImpl.java)
at android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java)
at <b>com.superswell.finde.unterschiede.LevelsActivity.onCreate (LevelsActivity.java)</b>
...
原因:android.content.res.Resources $ NotFoundException:
at android.content.res.Resources.loadDrawableForCookie (Resources.java:2872)
at android.content.res.Resources.loadDrawable (Resources.java:2756)
at android.content.res.TypedArray.getDrawable (TypedArray.java:870)
at android.view.View.<init> (View.java:4005)
at android.widget.TextView.<init> (TextView.java:700)
at android.widget.Button.<init> (Button.java:109)
at android.widget.Button.<init> (Button.java:105)
at android.support.v7.widget.AppCompatButton.<init> (AppCompatButton.java)
at android.support.v7.widget.AppCompatButton.<init> (AppCompatButton.java)
at <b>com.superswell.finde.unterschiede.ButtonCustom.AppCompatButtonCustom.<init> (AppCompatButtonCustom.java)</b>
...
原因:android.content.res.Resources $ NotFoundException:
at android.content.res.Resources.loadDrawableForCookie (Resources.java:2834)
at android.content.res.Resources.loadDrawable (Resources.java:2756)
at android.content.res.TypedArray.getDrawable (TypedArray.java:870)
at android.graphics.drawable.StateListDrawable.inflateChildElements (StateListDrawable.java:170)
at android.graphics.drawable.StateListDrawable.inflate (StateListDrawable.java:115)
at android.graphics.drawable.Drawable.createFromXmlInner (Drawable.java:1220)
at android.graphics.drawable.Drawable.createFromXml (Drawable.java:1129)
at android.content.res.Resources.loadDrawableForCookie (Resources.java:2862)
at android.content.res.Resources.loadDrawable (Resources.java:2756)
at android.content.res.TypedArray.getDrawable (TypedArray.java:870)
at android.view.View.<init> (View.java:4005)
at android.widget.TextView.<init> (TextView.java:700)
at android.widget.Button.<init> (Button.java:109)
at android.widget.Button.<init> (Button.java:105)
at android.support.v7.widget.AppCompatButton.<init> (AppCompatButton.java)
at android.support.v7.widget.AppCompatButton.<init> (AppCompatButton.java)
at <b>com.superswell.finde.unterschiede.ButtonCustom.AppCompatButtonCustom.<init> (AppCompatButtonCustom.java)</b>
at java.lang.reflect.Constructor.newInstance (Constructor.java)
at android.view.LayoutInflater.createView (LayoutInflater.java:619)
at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:764)
at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:704)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:835)
...
at android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java)
<b>at com.superswell.finde.unterschiede.LevelsActivity.onCreate (LevelsActivity.java)</b>
...
代码:
LevelsActivity
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_levels);
AppCompatButtonCustom
public class AppCompatButtonCustom extends AppCompatButton {
public AppCompatButtonCustom(Context context) {
super(context);
}
public AppCompatButtonCustom(Context context, AttributeSet attrs) {
super(context, attrs);
}
public AppCompatButtonCustom(Context context, AttributeSet attrs, int defStyleAttr) {
super(context, attrs, defStyleAttr);
}
@Override
public boolean isSoundEffectsEnabled() {
return AudioController.getInstance().isSoundOn() && super.isSoundEffectsEnabled();
}
}
activity_levels.xml 三个相同的按钮。
...
<com.superswell.finde.unterschiede.ButtonCustom.AppCompatButtonCustom
android:id="@+id/levels_button_back"
style="@style/Widget.AppCompat.Button"
android:layout_width="@dimen/button_bar_size"
android:layout_height="@dimen/button_bar_size"
android:layout_marginLeft="8dp"
android:layout_marginStart="8dp"
android:layout_marginTop="8dp"
android:background="@drawable/multiple_button_back"
android:minHeight="32dip"
android:minWidth="32dip"
android:textColor="@color/color_main_text"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintTop_toTopOf="parent"/>
...
可绘制按钮的示例
multiple_button_back.xml 所有可绘制对象在所有按钮中都是png。
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item
android:state_focused="true"
android:state_pressed="true"
android:drawable="@drawable/button_back_pressed" />
<item
android:state_focused="false"
android:state_pressed="true"
android:drawable="@drawable/button_back_pressed" />
<item android:drawable="@drawable/button_back_normal" />
</selector>
Png文件
渐变
...
dexOptions {// Prevent OutOfMemory with MultiDex during the build phase
javaMaxHeapSize "4g"
}
...
compileSdkVersion 28
defaultConfig {
...
minSdkVersion 16
targetSdkVersion 28
...
vectorDrawables.useSupportLibrary = true
...
预先感谢...