Skip to main content
 首页 » 编程设计

android之应用在启动时崩溃-android.view.InflateException:二进制XML文件行#0:二进制XML

2025年02月15日30oomusou

我是android的新手,我创建了一个非常简单的应用程序,可以顺利进行构建,但是当我尝试启动时(无论是在模拟器上还是在android设备上),它都会崩溃(图像波纹)。我不确定如何解决此问题,我检查了logcat,收到了一些消息,我认为它们可能指向错误源,但不知道它们的含义。
与我的设备One Plus 3T(android 8.0.0)一样,两个模拟器(PIXEL 2 XL API 27)上的应用程序崩溃。

下面是我的xml,java代码和日志结果

我的xml布局:

<RelativeLayout 
xmlns:android="http://schemas.android.com/apk/res/android" 
xmlns:tools="http://schemas.android.com/tools" 
android:layout_width="match_parent" 
android:layout_height="match_parent" 
android:paddingLeft="@dimen/activity_horizontal_margin" 
android:paddingRight="@dimen/activity_horizontal_margin" 
android:paddingTop="@dimen/activity_vertical_margin" 
android:paddingBottom="@dimen/activity_vertical_margin" 
tools:context=".MainActivity" 
android:background="#de7905"> 
 
<Button 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:text="@string/texto_frase_dia" 
    android:id="@+id/botaoNovaFraseId" 
    android:layout_alignParentTop="true" 
    android:layout_alignParentRight="true" 
    android:layout_alignParentEnd="true" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" /> 
 
<TextView 
    android:layout_width="wrap_content" 
    android:layout_height="wrap_content" 
    android:id="@+id/textoNovaFraseId" 
    android:layout_below="@+id/botaoNovaFraseId" 
    android:layout_alignParentLeft="true" 
    android:layout_alignParentStart="true" 
    android:layout_marginTop="20dp" 
    android:layout_alignRight="@+id/botaoNovaFraseId" 
    android:layout_alignEnd="@+id/botaoNovaFraseId" 
    android:textSize="@dimen/texto_nova_frase" 
    android:textColor="#fbfff7" /> 

我的Java代码:
package ie.app.frasedodia; 
 
import android.support.v7.app.AppCompatActivity; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuItem; 
import android.view.View; 
import android.widget.Button; 
import android.widget.TextView; 
import java.util.Random; 
 
public class MainActivity extends AppCompatActivity { 
 
    private TextView textoNovaFrase; 
    private Button botaoNovaFrase; 
 
    private String[] frases = { 
            "oi", 
            "tudo bem?", 
            "ddt?" 
    }; 
 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 
 
        textoNovaFrase = (TextView) findViewById(R.id.textoNovaFraseId); 
        botaoNovaFrase = (Button) findViewById(R.id.botaoNovaFraseId); 
 
        botaoNovaFrase.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
 
                Random randomico = new Random(); 
                int numeroAleatorio = randomico.nextInt( frases.length ); 
 
                textoNovaFrase.setText( frases[ numeroAleatorio ] ); 
            } 
        }); 
 
    } 
 
    @Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
        // Inflate the menu; this adds items to the action bar if it is present. 
        getMenuInflater().inflate(R.menu.menu_main, menu); 
        return true; 
    } 
 
    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
        // Handle action bar item clicks here. The action bar will 
        // automatically handle clicks on the Home/Up button, so long 
        // as you specify a parent activity in AndroidManifest.xml. 
        int id = item.getItemId(); 
 
        //noinspection SimplifiableIfStatement 
        if (id == R.id.action_settings) { 
            return true; 
        } 
 
        return super.onOptionsItemSelected(item); 
    } 
} 

我的日志输出:
03-03 15:46:24.740 11858-11858/? E/AndroidRuntime: FATAL EXCEPTION: main 
                                                   Process: ie.app.frasedodia, PID: 11858 
                                                   java.lang.RuntimeException: Unable to start activity ComponentInfo{ie.app.frasedodia/ie.app.frasedodia.MainActivity}: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class TextView 
                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2778) 
                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
                                                       at android.app.ActivityThread.-wrap11(Unknown Source:0) 
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
                                                       at android.os.Handler.dispatchMessage(Handler.java:106) 
                                                       at android.os.Looper.loop(Looper.java:164) 
                                                       at android.app.ActivityThread.main(ActivityThread.java:6494) 
                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 
                                                    Caused by: android.view.InflateException: Binary XML file line #0: Binary XML file line #0: Error inflating class TextView 
                                                    Caused by: android.view.InflateException: Binary XML file line #0: Error inflating class TextView 
                                                    Caused by: java.lang.UnsupportedOperationException: Can't convert value at index 2 to dimension: type=0x4 
                                                       at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:730) 
                                                       at android.widget.TextView.<init>(TextView.java:1226) 
                                                       at android.widget.TextView.<init>(TextView.java:820) 
                                                       at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:75) 
                                                       at android.support.v7.widget.AppCompatTextView.<init>(AppCompatTextView.java:71) 
                                                       at android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:103) 
                                                       at android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1024) 
                                                       at android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1081) 
                                                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:772) 
                                                       at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:730) 
                                                       at android.view.LayoutInflater.rInflate(LayoutInflater.java:863) 
                                                       at android.view.LayoutInflater.rInflateChildren(LayoutInflater.java:824) 
                                                       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.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 
                                                       at android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 
                                                       at ie.app.frasedodia.MainActivity.onCreate(MainActivity.java:27) 
                                                       at android.app.Activity.performCreate(Activity.java:6999) 
                                                       at android.app.Activity.performCreate(Activity.java:6990) 
                                                       at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1214) 
                                                       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2731) 
                                                       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2856) 
                                                       at android.app.ActivityThread.-wrap11(Unknown Source:0) 
                                                       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1589) 
                                                       at android.os.Handler.dispatchMessage(Handler.java:106) 
                                                       at android.os.Looper.loop(Looper.java:164) 
                                                       at android.app.ActivityThread.main(ActivityThread.java:6494) 
                                                       at java.lang.reflect.Method.invoke(Native Method) 
                                                       at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:438) 
                                                       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:807) 

我的gradle设置:
apply plugin: 'com.android.application' 
 
android { 
    compileSdkVersion 26 
    defaultConfig { 
        applicationId "ie.app.frasedodia" 
        minSdkVersion 23 
        targetSdkVersion 26 
        versionCode 1 
        versionName "1.0" 
        testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" 
    } 
    buildTypes { 
        release { 
            minifyEnabled false 
            proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' 
        } 
    } 
} 
 
dependencies { 
    implementation fileTree(dir: 'libs', include: ['*.jar']) 
    implementation 'com.android.support:appcompat-v7:26.1.0' 
    implementation 'com.android.support.constraint:constraint-layout:1.0.2' 
    testImplementation 'junit:junit:4.12' 
    androidTestImplementation 'com.android.support.test:runner:1.0.1' 
    androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1' 
} 

请您参考如下方法:

这个

Caused by: java.lang.UnsupportedOperationException: Can't convert value at index 2 to dimension: type=0x4 
at android.content.res.TypedArray.getDimensionPixelSize(TypedArray.java:730) 

使我认为 @dimen/texto_nova_frase中的单元有误。推荐的单位是sp。