2014-07-11 124 views
2
java.lang.NullPointerException 
at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:3405) 
at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:3405) 
at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:3405) 
at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:3405) 
at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:3405) 
at android.view.ViewGroup.dispatchCancelPendingInputEvents(ViewGroup.java:3405) 
at android.view.View.cancelPendingInputEvents(View.java:13591) 
at android.app.Activity.startActivityForResult(Activity.java:3554) 
at android.app.Activity.startActivityForResult(Activity.java:3493) 
at android.app.Activity.startActivity(Activity.java:3735) 
at android.app.Activity.startActivity(Activity.java:3703) 
at com.example.mobile.dt.startActivity(PActivity.java:223) 
at com.example.mobile.label.SplashActivity.d(SplashActivity.java:280) 
at com.example.mobile.label.SplashActivity.b(SplashActivity.java:266) 
at com.example.mobile.label.SplashActivity.c(SplashActivity.java:512) 
at com.example.mobile.label.SplashActivity.b(SplashActivity.java:446) 
at com.example.mobile.label.y.run(SplashActivity.java:388) 
at java.lang.Thread.run(Thread.java:841) 

我创建了一个由ChildActivity进行扩展的BaseActivity。 当我试图调用startActivity(意图)它的发生。startActivity throw Nullpointerexeption

SplashActivity(儿童)

public void openLoginActivity() { 
    Intent intent = new Intent(this, com.example.mobile.LoginActivity.class); 
    startActivity(intent); 
    finish(); 
} 

而且在BaseActivity

@Override 
public void startActivity(Intent intent) { 
    super.startActivity(intent); 
} 

这就是所谓的在SplashActivity代码:388我打电话StatusResponse(PResponse)

private void StatusResponse(Response response) { 
    JSONObject jsonResponse = response.response; 
    if (jsonResponse == null) { 
     restart(); 
     return; 
    } else { 

     try { 
      openLoginActivity(); 
     } catch (JSONException ex) { 
      restart(); 
      return; 
     } 
    } 
} 

它有时只有投掷。我不知道为什么会发生。

有人帮我!!!

+2

你为什么要重写startActivity? – Blackbelt

+0

删除您的意图声明中的包 Intent intent = new Intent(this,LoginActivity.class); – jDur

+0

你是否在自己的Thread中使用'startActivity'? – mapodev

回答

0

您正在使用第一个参数this创建一个意向。 刚刚删除活动后。 我认为系统找不到变量this的值。

您不需要在startActivity()之后启动finish()。 垃圾收集器在一段时间后删除未使用的变量。这就是它随机失败的原因。

编辑:

我的坏,我想你目前正在使用response没有,如果他存在检查。 所以加一个IF,如:

if (response != null) { 
    JSONObject jsonResponse = response.response; 
    // SOME CODE 
} 
+0

我们可以在startActivity之前调用finish()。这对垃圾收集器无关紧要。 –