Java 活动开始前出现空指针异常?
当我打开应用程序时,会发生一个奇怪的错误,我运行应用程序,它只是崩溃,并告诉我我有一个Java 活动开始前出现空指针异常?,java,android,nullpointerexception,Java,Android,Nullpointerexception,当我打开应用程序时,会发生一个奇怪的错误,我运行应用程序,它只是崩溃,并告诉我我有一个NullPointerException我已经检查了我的代码,但找不到可以立即崩溃应用程序的东西。调试也没有帮助 日志: 代码: 公共类MainActivity扩展了ActionBarActivity{ 按钮b; @凌驾 创建时受保护的void(Bundle savedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.lay
NullPointerException
我已经检查了我的代码,但找不到可以立即崩溃应用程序的东西。调试也没有帮助
日志:
代码:
公共类MainActivity扩展了ActionBarActivity{
按钮b;
@凌驾
创建时受保护的void(Bundle savedInstanceState){
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b=(按钮)findviewbyd(R.id.search_按钮);
b、 setOnClickListener(按钮单击);
}
私有OnClickListener按钮单击=新建按钮。OnClickListener(){
@凌驾
公共void onClick(视图v){
按钮b=(按钮)findViewById(R.id.search_按钮);
b、 可点击设置(真);
新建LongRunningGetIO().execute();
}
};
类LongRunningGetIO扩展了AsyncTask{
受保护字符串GetAscioContentRomentity(HttpEntity实体)引发IllegalStateException、IOException{
InputStream in=entity.getContent();
StringBuffer out=新的StringBuffer();
int n=1;
而(n>0){
字节[]b=新字节[4096];
n=英寸读数(b);
如果(n>0)out.append(新字符串(b,0,n));
}
return out.toString();
}
@凌驾
受保护字符串doInBackground(无效…参数){
字符串r=“wtf”;
HttpClient HttpClient=新的DefaultHttpClient();
HttpContext localContext=新的BasicHttpContext();
HttpGet HttpGet=新的HttpGet(“http://www.reddit.com/api/subreddits_by_topic.json?query=\“+r+”\”);
字符串文本=空;
试一试{
HttpResponse response=httpClient.execute(httpGet,localContext);
HttpEntity=response.getEntity();
text=getAsciContentRomentity(实体);
}捕获(例外e){
返回e.getLocalizedMessage();
}
返回文本;
}
受保护的void onPostExecute(字符串结果){
如果(结果!=null){
}
}
}
请随时询问是否需要更多代码。onCreate()第35行正在抛出一个NPE,你确定你的视图层次结构中有一个名为search_button的视图吗?@panini我觉得很愚蠢…这就是问题所在,出于某种原因,即使它名为
searchButton
而不是search_button
编译器没有抛出错误。谢谢!@panini是的,对不起,我不能给你打勾。小心点这是因为你在另一个布局中声明了另一个视图,称为search_button,所以编译器将它添加到了你的R文件中,它确实存在于编译器中。
10-14 21:36:32.130: E/AndroidRuntime(18166): FATAL EXCEPTION: main
10-14 21:36:32.130: E/AndroidRuntime(18166): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.taimurinc.javatest/com.taimurinc.javatest.MainActivity}: java.lang.NullPointerException
10-14 21:36:32.130: E/AndroidRuntime(18166): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1960)
10-14 21:36:32.130: E/AndroidRuntime(18166): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1985)
10-14 21:36:32.130: E/AndroidRuntime(18166): at android.app.ActivityThread.access$600(ActivityThread.java:123)
10-14 21:36:32.130: E/AndroidRuntime(18166): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1151)
10-14 21:36:32.130: E/AndroidRuntime(18166): at android.os.Handler.dispatchMessage(Handler.java:99)
10-14 21:36:32.130: E/AndroidRuntime(18166): at android.os.Looper.loop(Looper.java:137)
10-14 21:36:32.130: E/AndroidRuntime(18166): at android.app.ActivityThread.main(ActivityThread.java:4429)
10-14 21:36:32.130: E/AndroidRuntime(18166): at java.lang.reflect.Method.invokeNative(Native Method)
10-14 21:36:32.130: E/AndroidRuntime(18166): at java.lang.reflect.Method.invoke(Method.java:511)
10-14 21:36:32.130: E/AndroidRuntime(18166): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:791)
10-14 21:36:32.130: E/AndroidRuntime(18166): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:558)
10-14 21:36:32.130: E/AndroidRuntime(18166): at dalvik.system.NativeStart.main(Native Method)
10-14 21:36:32.130: E/AndroidRuntime(18166): Caused by: java.lang.NullPointerException
10-14 21:36:32.130: E/AndroidRuntime(18166): at com.taimurinc.javatest.MainActivity.onCreate(MainActivity.java:35)
10-14 21:36:32.130: E/AndroidRuntime(18166): at android.app.Activity.performCreate(Activity.java:4471)
10-14 21:36:32.130: E/AndroidRuntime(18166): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1049)
10-14 21:36:32.130: E/AndroidRuntime(18166): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1924)
10-14 21:36:32.130: E/AndroidRuntime(18166): ... 11 more
public class MainActivity extends ActionBarActivity {
Button b;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
b = (Button) findViewById(R.id.search_button);
b.setOnClickListener(buttonClick);
}
private OnClickListener buttonClick = new Button.OnClickListener() {
@Override
public void onClick(View v) {
Button b = (Button) findViewById(R.id.search_button);
b.setClickable(true);
new LongRunningGetIO().execute();
}
};
class LongRunningGetIO extends AsyncTask <Void, Void, String> {
protected String getASCIIContentFromEntity(HttpEntity entity) throws IllegalStateException, IOException {
InputStream in = entity.getContent();
StringBuffer out = new StringBuffer();
int n = 1;
while (n>0) {
byte[] b = new byte[4096];
n = in.read(b);
if (n>0) out.append(new String(b, 0, n));
}
return out.toString();
}
@Override
protected String doInBackground(Void... params) {
String r = "wtf";
HttpClient httpClient = new DefaultHttpClient();
HttpContext localContext = new BasicHttpContext();
HttpGet httpGet = new HttpGet("http://www.reddit.com/api/subreddits_by_topic.json?query=\"" + r + "\"");
String text = null;
try {
HttpResponse response = httpClient.execute(httpGet, localContext);
HttpEntity entity = response.getEntity();
text = getASCIIContentFromEntity(entity);
} catch (Exception e) {
return e.getLocalizedMessage();
}
return text;
}
protected void onPostExecute(String results) {
if (results!=null) {
}
}
}