【发布时间】:2014-03-23 17:35:32
【问题描述】:
LogCat:
03-24 00:27:31.156: E/AndroidRuntime(13836): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.xxxxxx.yyyyyy/com.xxxxxx.yyyyyy.Main}: java.lang.NullPointerException
这是我在尝试启动应用程序时在 logCat 中看到的内容。但在我看来,我的代码还可以,所以我不知道问题是什么,请帮忙!提前致谢。
Main.java
package com.xxxxxx.yyyyyy;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
public class Main extends Activity
{
Button start;
protected void onCreate(Bundle bundle)
{
super.onCreate(bundle);
setContentView(0x7f030010);
start = (Button)findViewById(0x7f080047);
start.setOnClickListener(new android.view.View.OnClickListener() {
public void onClick(View view)
{
Intent intent = new Intent(Main.this, Tab1.class);
startActivity(intent);
}
});
}
}
【问题讨论】:
-
an unknown reason被称为 NPE。 -
直接使用 id 确实是一种糟糕且危险的做法。不仅不可读,而且如果您要更改设计中的任何内容,那么...祝您好运!
-
Unable to start activity ComponentInfo{com.xxxxxx.yyyyyy/com.xxxxxx.yyyyyy.Main}: java.lang.NullPointerException对此一无所知。该日志还将准确地告诉您它发生在哪一行。正如其他人所说,硬编码的 ID 几乎肯定是问题所在。每次您更改资源并重建时,它都会改变。findViewById()然后将返回 null 和繁荣 -NullPointerException。另外,it seems to me that my code is OK,如果这是真的,你就不会崩溃! -
我的 comp 崩溃了一次,我丢失了除 apk 文件之外的所有内容,所以我对它们进行了反编译,它看起来和它看起来一样,带有硬编码的 id..
-
只需从备份中恢复。如果您不支持,那么对不起,任何人都无能为力,您已经吸取了惨痛的教训。事实上,重写应用程序可能比在反编译后尝试修复它更快。另外,请从 logcat 发布堆栈跟踪,以便我们确认错误。如果您所做的只是重新编译,那么 ID 不会更改,因此很可能是另一个问题。
标签: android nullpointerexception android-activity