ANDROID API <= 23:android.content.res.Resources $ NotFoundException

时间:2019-04-10 05:47:36

标签: java android

试图解决此错误,该错误显示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文件

Pngs files

渐变

...
    dexOptions {// Prevent OutOfMemory with MultiDex during the build phase
        javaMaxHeapSize "4g"
    }
...
    compileSdkVersion 28
    defaultConfig {
...
    minSdkVersion 16
    targetSdkVersion 28
...
    vectorDrawables.useSupportLibrary = true
...

预先感谢...

0 个答案:

没有答案