我是Android开发的新手。我无法弄清楚为什么这会在模拟器中崩溃,当我在我的Android模拟器上运行这个程序时它会打开然后快速关闭给我一个“不幸的问候世界已停止消息。
public class HelloAndroidActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView t=(TextView)findViewById(R.id.textView1);
t.setText("Secoknd text to display!");
}
}
xml文件:
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="fill_parent"
android:orientation="horizontal" >
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="38dp"
android:editable="true"
android:text="TextView" />
</LinearLayout>
logcat的:
10-20 20:07:48.784: D/AndroidRuntime(601): Shutting down VM
10-20 20:07:48.784: W/dalvikvm(601): threadid=1: thread exiting with uncaught exception (group=0x409951f8)
10-20 20:07:48.804: E/AndroidRuntime(601): FATAL EXCEPTION: main
10-20 20:07:48.804: E/AndroidRuntime(601): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.helloandroid/com.example.helloandroid.HelloAndroidActivity}: java.lang.NullPointerException
10-20 20:07:48.804: E/AndroidRuntime(601): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1955)
10-20 20:07:48.804: E/AndroidRuntime(601): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1980)
10-20 20:07:48.804: E/AndroidRuntime(601): at android.app.ActivityThread.access$600(ActivityThread.java:122)
10-20 20:07:48.804: E/AndroidRuntime(601): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1146)
10-20 20:07:48.804: E/AndroidRuntime(601): at android.os.Handler.dispatchMessage(Handler.java:99)
10-20 20:07:48.804: E/AndroidRuntime(601): at android.os.Looper.loop(Looper.java:137)
10-20 20:07:48.804: E/AndroidRuntime(601): at android.app.ActivityThread.main(ActivityThread.java:4340)
10-20 20:07:48.804: E/AndroidRuntime(601): at java.lang.reflect.Method.invokeNative(Native Method)
10-20 20:07:48.804: E/AndroidRuntime(601): at java.lang.reflect.Method.invoke(Method.java:511)
10-20 20:07:48.804: E/AndroidRuntime(601): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
10-20 20:07:48.804: E/AndroidRuntime(601): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
10-20 20:07:48.804: E/AndroidRuntime(601): at dalvik.system.NativeStart.main(Native Method)
10-20 20:07:48.804: E/AndroidRuntime(601): Caused by: java.lang.NullPointerException
10-20 20:07:48.804: E/AndroidRuntime(601): at com.example.helloandroid.HelloAndroidActivity.onCreate(HelloAndroidActivity.java:16)
10-20 20:07:48.804: E/AndroidRuntime(601): at android.app.Activity.performCreate(Activity.java:4465)
10-20 20:07:48.804: E/AndroidRuntime(601): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
10-20 20:07:48.804: E/AndroidRuntime(601): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1919)
10-20 20:07:48.804: E/AndroidRuntime(601): ... 11 more
10-20 20:12:48.894: I/Process(601): Sending signal. PID: 601 SIG: 9
答案 0 :(得分:2)
如果TextView为您提供的代码为空,则必须设置错误的布局ID。您的代码示例包含setContentView(R.layout.main);
。您提供的xml是否可能来自main.xml以外的文件?
答案 1 :(得分:0)
如果您为不同的屏幕尺寸设计了多个布局文件,则必须将其命名为相同的ID。如果id不匹配,就会发生这种情况。
例如
public class HelloAndroidActivity extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
TextView t=(TextView)findViewById(R.id.textView1);
t.setText("Secoknd text to display!");
}
}
布局/ main.xml中
<TextView
android:id="@+id/textView1"
android:layout_width="match_parent"
android:layout_height="38dp"
android:editable="true"
android:text="TextView" />
布局-大HDPI / main.xml中
<TextView
android:id="@+id/textView2"
android:layout_width="match_parent"
android:layout_height="38dp"
android:editable="true"
android:text="TextView" />
如果你在ldpi手机上运行它可以工作。但如果你在hdpi手机上运行它就找不到