【问题标题】:startActivity throw NullPointerExceptionstartActivity 抛出 NullPointerException
【发布时间】:2014-07-11 09:22:55
【问题描述】:
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(intent) 时,它正在发生。

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;
        }
    }
}

它有时只是投掷。我不确定为什么会这样。

有人帮帮我!!!

【问题讨论】:

  • 为什么要覆盖 startActivity?
  • 去掉你Intent声明中的包 Intent intent = new Intent(this, LoginActivity.class);
  • 您是否在自己的线程中使用startActivity
  • 但是我在 childActivity 项目中使用 LoginActivity 项目作为库。
  • 你能在这里显示什么吗:SplashActivity.java:388

标签: android android-activity android-lifecycle


【解决方案1】:

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

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

编辑:

我的错,我认为您目前正在使用 response 而不检查他是否存在。 所以添加一个IF 喜欢:

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

【讨论】:

  • 我们可以在startActivity之前调用的finish()。垃圾收集器没关系。
  • 如果是未经检查的响应访问,调用堆栈看起来会有所不同。
猜你喜欢
  • 2017-08-11
  • 2013-09-07
  • 2013-06-18
  • 2016-07-07
  • 2014-10-02
  • 2012-05-21
  • 2014-08-15
  • 2013-08-06
  • 2019-09-21
相关资源
最近更新 更多