【发布时间】:2018-06-25 17:57:06
【问题描述】:
我是 Android 编程新手,我决定构建一个测验应用程序。我构建了布局并想设置一个按钮来启动一个开始测验的新活动。我还在 MainActivity 中正确设置了方法,但是当我运行应用程序并单击按钮时,应用程序崩溃并在 logcat 上留下大量错误消息。
任何帮助将不胜感激。以下是代码。
XML 代码:
<Button
android:id="@+id/button_view"
android:layout_width="200dp"
android:layout_height="60dp"
android:layout_below="@id/name_view"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:background="@drawable/button_round"
android:fontFamily="sans-serif-light"
android:inputType="textCapWords"
android:text="Go!"
android:onClick="startQuestionOne"
android:textSize="24dp" />
主活动
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
}
public void startQuestionOne(View view) {
Intent myIntent = new Intent(LoginActivity.this, QuestionOneActivity.class);
startActivity(myIntent);
}
}
Logcat 消息
06-25 18:32:34.259 13705-13705/com.example.android.udacityquizapp E/AndroidRuntime: 致命异常: main 进程:com.example.android.udacityquizapp,PID:13705 java.lang.RuntimeException:无法启动活动 ComponentInfo{com.example.android.udacityquizapp/com.example.android.udacityquizapp.QuestionOneActivity}:android.view.InflateException:二进制 XML 文件第 23 行:错误膨胀类 null 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2344) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396) 在 android.app.ActivityThread.access$800(ActivityThread.java:154) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1324) 在 android.os.Handler.dispatchMessage(Handler.java:110) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:5328) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644) 在 dalvik.system.NativeStart.main(本机方法) 引起:android.view.InflateException:二进制 XML 文件第 23 行:错误膨胀类 null 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:713) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:492) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:397) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:353) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 在 com.example.android.udacityquizapp.QuestionOneActivity.onCreate(QuestionOneActivity.java:11) 在 android.app.Activity.performCreate(Activity.java:5279) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396) 在 android.app.ActivityThread.access$800(ActivityThread.java:154) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1324) 在 android.os.Handler.dispatchMessage(Handler.java:110) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:5328) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644) 在 dalvik.system.NativeStart.main(本机方法) 引起:java.lang.NullPointerException 在 android.support.v7.app.AppCompatViewInflater.createView(AppCompatViewInflater.java:99) 在 android.support.v7.app.AppCompatDelegateImplV9.createView(AppCompatDelegateImplV9.java:1035) 在 android.support.v7.app.AppCompatDelegateImplV9.onCreateView(AppCompatDelegateImplV9.java:1092) 在 android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:684) 在 android.view.LayoutInflater.rInflate(LayoutInflater.java:755) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:492) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:397) 在 android.view.LayoutInflater.inflate(LayoutInflater.java:353) 在 android.support.v7.app.AppCompatDelegateImplV9.setContentView(AppCompatDelegateImplV9.java:287) 在 android.support.v7.app.AppCompatActivity.setContentView(AppCompatActivity.java:139) 在 com.example.android.udacityquizapp.QuestionOneActivity.onCreate(QuestionOneActivity.java:11) 在 android.app.Activity.performCreate(Activity.java:5279) 在 android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1088) 在 android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2308) 在 android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2396) 在 android.app.ActivityThread.access$800(ActivityThread.java:154) 在 android.app.ActivityThread$H.handleMessage(ActivityThread.java:1324) 在 android.os.Handler.dispatchMessage(Handler.java:110) 在 android.os.Looper.loop(Looper.java:193) 在 android.app.ActivityThread.main(ActivityThread.java:5328) 在 java.lang.reflect.Method.invokeNative(Native Method) 在 java.lang.reflect.Method.invoke(Method.java:515) 在 com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:828) 在 com.android.internal.os.ZygoteInit.main(ZygoteInit.java:644) 在 dalvik.system.NativeStart.main(本机方法)
这是完整的 XML
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout 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"
android:background="@drawable/gradient"
tools:context=".LoginActivity">
<ImageView
android:id="@+id/udacity_logo"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:src="@drawable/udacity" />
<TextView
android:id="@+id/textview_text"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@id/udacity_logo"
android:layout_centerHorizontal="true"
android:layout_marginTop="20dp"
android:fontFamily="sans-serif-ligh"
android:text="Udacity Quiz App"
android:textColor="#faebd7"
android:textSize="36dp"
android:textStyle="bold" />
<EditText
android:id="@+id/name_view"
android:layout_width="300dp"
android:layout_height="40dp"
android:layout_below="@id/textview_text"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:background="@drawable/edit_round"
android:drawableLeft="@drawable/ic_action_user"
android:ems="10"
android:fontFamily="sans-serif-light"
android:hint="Name"
android:inputType="textCapWords"
android:textColor="#000000"
android:textColorHint="#000000"
android:textSize="16dp" />
<Button
android:id="@+id/button_view"
android:layout_width="200dp"
android:layout_height="60dp"
android:layout_below="@id/name_view"
android:layout_centerHorizontal="true"
android:layout_marginTop="30dp"
android:background="@drawable/button_round"
android:fontFamily="sans-serif-light"
android:inputType="textCapWords"
android:text="Go!"
android:onClick="startQuestionOne"
android:textSize="24dp" />
<TextView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentBottom="true"
android:layout_alignParentRight="true"
android:layout_marginBottom="8dp"
android:layout_marginRight="8dp"
android:fontFamily="sans-serif-light"
android:text="powered by: @William"
android:textColor="#faebd7" />
</RelativeLayout>
上面是 LoginActivity 的 XML,其中包含一个按钮。单击该按钮时,它应该启动一个名为 QuestionOneActivity 的新活动,但应用程序崩溃了。
登录活动
package com.example.android.udacityquizapp;
import android.content.Intent;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class LoginActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
}
public void startQuestionOne(View view) {
Intent myIntent = new Intent(LoginActivity.this,
QuestionOneActivity.class);
startActivity(myIntent);
}
}
【问题讨论】:
-
该错误表明您的 QuestionOneActivity 的 XML 文件在第 23 行存在问题。如果您对此进行调查但无法弄清楚,发布完整文件(或完整应用程序)将更容易帮忙。从您发布的 RuntimeException 中:“QuestionOneActivity: android.view.InflateException: Binary XML file line #23: Error inflating class null”
-
信息不足
-
可能是某项活动的投射问题
-
我已经编辑了帖子以添加来自 XML 和 Java 的完整代码。
-
@clay_to_n 我在第 23 行添加了一个视图标记。此外,在 XML 布局的右上角,我得到一个渲染错误,无法在没有类属性的情况下膨胀视图标记
标签: java android android-studio android-intent