安卓错误:膨胀类EditText失败

8
我遇到了一个奇怪的问题。每当我在Activity中添加EditText时,我的Android应用程序就会崩溃。为了测试,我打开了一个新的干净项目,如果有EditText,新项目也会崩溃。因此,我认为问题是由Android Studio或其他环境设置引起的。
以下是activity_main.xml的内容:
 <?xml version="1.0" encoding="utf-8"?>
<android.support.constraint.ConstraintLayout
    android:id="@+id/activity_main"
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="yichun.myapplication.MainActivity">

    <TextView
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Hello World!"
        android:id="@+id/textView"
        app:layout_constraintLeft_toLeftOf="@+id/activity_main"
        app:layout_constraintTop_toTopOf="@+id/activity_main"
        app:layout_constraintRight_toRightOf="@+id/activity_main"
        app:layout_constraintBottom_toBottomOf="@+id/activity_main"/>
    <EditText
        android:layout_width="218dp"
        android:layout_height="45dp"
        android:inputType="textPersonName"
        android:text="Name"
        android:ems="10"
        tools:layout_editor_absoluteX="90dp"
        android:id="@+id/editText"
        app:layout_constraintBottom_toTopOf="@+id/textView" android:layout_marginBottom="40dp"/>
</android.support.constraint.ConstraintLayout>

MainActivity.java public class MainActivity extends AppCompatActivity {

主活动.java 公共类 MainActivity 扩展自 AppCompatActivity {
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
    }
}

AndroidManifest.xml

<?xml version="1.0" encoding="utf-8"?>

<application
    android:allowBackup="true"
    android:icon="@mipmap/ic_launcher"
    android:label="@string/app_name"
    android:supportsRtl="true"
    android:theme="@style/AppTheme">
    <activity android:name=".MainActivity">
        <intent-filter>
            <action android:name="android.intent.action.MAIN"/>

            <category android:name="android.intent.category.LAUNCHER"/>
        </intent-filter>
    </activity>
</application>

错误消息

E/AndroidRuntime: FATAL EXCEPTION: main
              Process: yichun.myapplication, PID: 3239
              java.lang.RuntimeException: Unable to start activity ComponentInfo{yichun.myapplication/yichun.myapplication.MainActivity}: android.view.InflateException: Binary XML file line #20: Error inflating class EditText
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2298)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360)
                  at android.app.ActivityThread.access$800(ActivityThread.java:144)
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278)
                  at android.os.Handler.dispatchMessage(Handler.java:102)
                  at android.os.Looper.loop(Looper.java:135)
                  at android.app.ActivityThread.main(ActivityThread.java:5221)
                  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:899)
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694)
               Caused by: android.view.InflateException: Binary XML file line #20: Error inflating class EditText
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:763)
                  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 android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280)
                  at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140)
                  at yichun.myapplication.MainActivity.onCreate(MainActivity.java:11)
                  at android.app.Activity.performCreate(Activity.java:5937)
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105)
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251)
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
                  at android.app.ActivityThread.access$800(ActivityThread.java:144) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:135) 
                  at android.app.ActivityThread.main(ActivityThread.java:5221) 
                  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:899) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
               Caused by: android.content.res.Resources$NotFoundException: File res/drawable-v21/abc_edit_text_material.xml from drawable resource ID #0x7f020015
                  at android.content.res.Resources.loadDrawableForCookie(Resources.java:2428)
                  at android.content.res.Resources.loadDrawable(Resources.java:2330)
                  at android.content.res.TypedArray.getDrawable(TypedArray.java:749)
                  at android.view.View.<init>(View.java:3730)
                  at android.widget.TextView.<init>(TextView.java:634)
                  at android.widget.EditText.<init>(EditText.java:65)
                  at android.widget.EditText.<init>(EditText.java:61)
                  at android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.java:60)
                  at android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.java:56)
                  at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:112)
                  at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:980)
                  at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:1039)
                  at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44)
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:725)
                  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 android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                  at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                  at yichun.myapplication.MainActivity.onCreate(MainActivity.java:11) 
                  at android.app.Activity.performCreate(Activity.java:5937) 
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
                  at android.app.ActivityThread.access$800(ActivityThread.java:144) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:135) 
                  at android.app.ActivityThread.main(ActivityThread.java:5221) 
                  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:899) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694) 
               Caused by: org.xmlpull.v1.XmlPullParserException: Binary XML file line #24: <nine-patch> requires a valid 9-patch source image
                  at android.graphics.drawable.NinePatchDrawable.updateStateFromTypedArray(NinePatchDrawable.java:445)
                  at android.graphics.drawable.NinePatchDrawable.inflate(NinePatchDrawable.java:401)
                  at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1095)
                  at android.graphics.drawable.StateListDrawable.inflate(StateListDrawable.java:185)
                  at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1095)
                  at android.graphics.drawable.InsetDrawable.inflate(InsetDrawable.java:104)
                  at android.graphics.drawable.Drawable.createFromXmlInner(Drawable.java:1095)
                  at android.graphics.drawable.Drawable.createFromXml(Drawable.java:1017)
                  at android.content.res.Resources.loadDrawableForCookie(Resources.java:2418)
                  at android.content.res.Resources.loadDrawable(Resources.java:2330) 
                  at android.content.res.TypedArray.getDrawable(TypedArray.java:749) 
                  at android.view.View.<init>(View.java:3730) 
                  at android.widget.TextView.<init>(TextView.java:634) 
                  at android.widget.EditText.<init>(EditText.java:65) 
                  at android.widget.EditText.<init>(EditText.java:61) 
                  at android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.java:60) 
                  at android.support.v7.widget.AppCompatEditText.<init>(AppCompatEditText.java:56) 
                  at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:112) 
                  at android.support.v7.app.AppCompatDelegateImplV7.createView(AppCompatDelegateImplV7.java:980) 
                  at android.support.v7.app.AppCompatDelegateImplV7.onCreateView(AppCompatDelegateImplV7.java:1039) 
                  at android.support.v4.view.LayoutInflaterCompatHC$FactoryWrapperHC.onCreateView(LayoutInflaterCompatHC.java:44) 
                  at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:725) 
                  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 android.support.v7.app.AppCompatDelegateImplV7.setContentView(AppCompatDelegateImplV7.java:280) 
                  at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:140) 
                  at yichun.myapplication.MainActivity.onCreate(MainActivity.java:11) 
                  at android.app.Activity.performCreate(Activity.java:5937) 
                  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1105) 
                  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2251) 
                  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2360) 
                  at android.app.ActivityThread.access$800(ActivityThread.java:144) 
                  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1278) 
                  at android.os.Handler.dispatchMessage(Handler.java:102) 
                  at android.os.Looper.loop(Looper.java:135) 
                  at android.app.ActivityThread.main(ActivityThread.java:5221) 
                  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:899) 
                  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:694

1
Resources$NotFoundException: 未找到文件 res/drawable-v21/abc_edit_text_material.xml,请检查您所使用的主题。 - Vucko
在您的活动主题中,您可能正在设置一个不存在的编辑文本主题。 - E. Fernandes
2个回答

5
使用2.2.x版本的Gradle插件可能会导致此问题。

故障跟踪链接

降级可能值得一试。
// project level build.gradle
dependencies {
    classpath 'com.android.tools.build:gradle:2.1.0'
}

我认为这个问题最终会得到解决,因此未来的读者可以尝试升级而不是降级 :)


1
我正在使用com.android.tools.build:gradle:3.3.2,但在一个5.0设备上仍然遇到了相同的错误。 - ozmank

3

同样的问题:已解决。 我的图像文件位于“drawable-v24”文件夹中。也将它们移动到“drawable”文件夹中。 问题解决。


这是最好的答案。大多数情况下,原因就在这里。谢谢! - Dinith Rukshan Kumara

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接