我已经部署了Android应用程序,并且崩溃报告表明该应用程序无法在MIUI设备上启动。我在MainActivity中遇到布局异常。添加了崩溃报告:
java.lang.RuntimeException:
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2200)
at android.app.ActivityThread.handleLaunchActivity (ActivityThread.java:2249)
at android.app.ActivityThread.access$800 (ActivityThread.java:141)
at android.app.ActivityThread$H.handleMessage (ActivityThread.java:1212)
at android.os.Handler.dispatchMessage (Handler.java:102)
at android.os.Looper.loop (Looper.java:136)
at android.app.ActivityThread.main (ActivityThread.java:5113)
at java.lang.reflect.Method.invokeNative (Native Method)
at java.lang.reflect.Method.invoke (Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:796)
at com.android.internal.os.ZygoteInit.main (ZygoteInit.java:612)
at dalvik.system.NativeStart.main (Native Method)
Caused by: android.view.InflateException:
at android.view.LayoutInflater.createView (LayoutInflater.java:623)
at com.android.internal.policy.impl.PhoneLayoutInflater.onCreateView (PhoneLayoutInflater.java:56)
at android.view.LayoutInflater.onCreateView (LayoutInflater.java:672)
at android.view.LayoutInflater.createViewFromTag (LayoutInflater.java:697)
at android.view.LayoutInflater.rInflate (LayoutInflater.java:758)
at android.view.LayoutInflater.inflate (LayoutInflater.java:495)
at android.view.LayoutInflater.inflate (LayoutInflater.java:400)
at android.view.LayoutInflater.inflate (LayoutInflater.java:353)
at android.support.v7.app.AppCompatDelegateImplV9.setContentView (AppCompatDelegateImplV9.java:287)
at android.support.v7.app.AppCompatActivity.setContentView (AppCompatActivity.java:139)
at com.studio.sanjeev.shhsilence.MainActivity.onCreate (MainActivity.java:76)
at android.app.Activity.performCreate (Activity.java:5242)
at android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1087)
at android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2164)
Caused by: java.lang.reflect.InvocationTargetException:
at java.lang.reflect.Constructor.constructNative (Native Method)
at java.lang.reflect.Constructor.newInstance (Constructor.java:423)
at android.view.LayoutInflater.createView (LayoutInflater.java:597)
Caused by: android.content.res.Resources$NotFoundException:
at android.content.res.Resources.loadDrawable (Resources.java:2139)
at android.content.res.MiuiResources.loadDrawable (MiuiResources.java:393)
at android.content.res.Resources.loadDrawable (Resources.java:2062)
at android.content.res.TypedArray.getDrawable (TypedArray.java:602)
at android.view.View.<init> (View.java:3558)
at android.widget.TextView.<init> (TextView.java:623)
at android.widget.Button.<init> (Button.java:107)
at android.widget.CompoundButton.<init> (CompoundButton.java:68)
at android.widget.ToggleButton.<init> (ToggleButton.java:51)
at android.widget.ToggleButton.<init> (ToggleButton.java:64)
Caused by: android.content.res.Resources$NotFoundException:
at android.content.res.Resources.loadDrawable (Resources.java:2139)
at android.content.res.MiuiResources.loadDrawable (MiuiResources.java:393)
at android.content.res.Resources.loadDrawable (Resources.java:2062)
at android.content.res.Resources.getDrawable (Resources.java:710)
at android.graphics.drawable.StateListDrawable.inflate (StateListDrawable.java:176)
at android.graphics.drawable.Drawable.createFromXmlInner (Drawable.java:939)
at android.graphics.drawable.Drawable.createFromXml (Drawable.java:879)
at android.content.res.Resources.createFromXml (Resources.java:2515)
at android.content.res.Resources.loadDrawable (Resources.java:2135)
Caused by: org.xmlpull.v1.XmlPullParserException:
at android.graphics.drawable.Drawable.createFromXmlInner (Drawable.java:935)
at android.graphics.drawable.Drawable.createFromXml (Drawable.java:879)
at android.content.res.Resources.createFromXml (Resources.java:2515)
at android.content.res.Resources.loadDrawable (Resources.java:2135)
MainActivity上的第76行是
73: @Override
74: protected void onCreate(Bundle savedInstanceState) {
75: super.onCreate(savedInstanceState);
76: setContentView(R.layout.activity_main);
我研究过LayoutInflater,主要是在内存不足的情况下出现,而我的activity_main没有这样的问题。我在切换按钮中使用矢量可绘制图像:
<ToggleButton
android:id="@+id/power"
android:layout_width="0dp"
android:layout_height="0dp"
android:textOff=""
android:textOn=""
android:background="@drawable/check"
app:layout_constraintBottom_toTopOf="@+id/adView"
app:layout_constraintDimensionRatio="1:1"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent" />
check是一个选择器,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android">
<item android:drawable="@drawable/poweron"
android:state_checked="true" />
<item android:drawable="@drawable/poweroff"
android:state_checked="false"/>
</selector>
我想知道究竟是什么影响了我的应用的MIUI用户,以及如何尽快修复它。