【问题标题】:Android: Application crashes when an activity is started using Intent in a DialogFragmentAndroid:使用 DialogFragment 中的 Intent 启动活动时应用程序崩溃
【发布时间】:2016-03-04 19:29:04
【问题描述】:
Intent i = new Intent(getActivity(), MytabActivity.class);
startActivity(i);

我的DialogFragment 在调用活动中单击按钮时打开。我做了它所要求的并且能够运行代码的所有部分,除了在服务器成功响应后打开另一个活动(我正在使用 volley)。值确实发生了变化,但它在这部分崩溃了。

有什么想法吗?

这里是代码的截图。

日志猫:

03-05 03:30:11.570  16952-16952/com.example.carlajoyce.ccare E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.example.carlajoyce.ccare, PID: 16952
java.lang.NullPointerException
        at android.widget.Toast.<init>(Toast.java:93)
        at android.widget.Toast.makeText(Toast.java:241)
        at com.example.carlajoyce.ccare.UpdateDialogFragment$2$1.onResponse(UpdateDialogFragment.java:73)
        at com.example.carlajoyce.ccare.UpdateDialogFragment$2$1.onResponse(UpdateDialogFragment.java:64)
        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:60)
        at com.android.volley.toolbox.StringRequest.deliverResponse(StringRequest.java:30)
        at com.android.volley.ExecutorDelivery$ResponseDeliveryRunnable.run(ExecutorDelivery.java:99)
        at android.os.Handler.handleCallback(Handler.java:733)
        at android.os.Handler.dispatchMessage(Handler.java:95)
        at android.os.Looper.loop(Looper.java:136)
        at android.app.ActivityThread.main(ActivityThread.java:5001)
        at java.lang.reflect.Method.invokeNative(Native Method)
        at java.lang.reflect.Method.invoke(Method.java:515)
        at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:801)
        at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:617)
        at dalvik.system.NativeStart.main(Native Method)

【问题讨论】:

  • 请提供堆栈跟踪
  • Stacktrace 已发布。谢谢
  • 尝试使用 getApplicationContext() 而不是 getActivity()
  • 根据堆栈跟踪,您的问题不在于意图,而在于第 73 行的 Toast。正如@galhe2 所提到的,问题可能出在线程上。因此,您可以尝试使用 runOnUiThread 将该行包装在构造中。
  • @Bashalex 我在第 73 行注释掉了 Toast 以使其不会崩溃,但它仍然适用于用 runOnUiThread 包装的 Intent。

标签: android android-intent android-activity dialogfragment


【解决方案1】:

崩溃可能是因为您从后台线程调用 Intent。确保您从 Activity 中的主线程调用 Intent

尝试将您的意图投射到以下内容中:

context.runOnUiThread(new Runnable() {
    public void run() {
        //INTENT HERE
    }
});

【讨论】:

  • IDE 无法解析 runOnUiThread,因为我的类扩展到 DialogFragment 而不是 Activity
  • 你能得到DialogFragment里面的上下文吗?如果是,请将其添加到 runOnUiThread 之前(请参阅已编辑的答案)您可以通过调用以下命令获取上下文:getApplicationContext()
  • 我可以通过getActivity().runOnUiThread(new Run..... 获取线程,但错误仍然存​​在于同一个位置。
猜你喜欢
  • 2020-08-08
  • 1970-01-01
  • 1970-01-01
  • 2013-06-24
  • 1970-01-01
  • 1970-01-01
  • 2016-08-10
  • 1970-01-01
  • 2012-06-17
相关资源
最近更新 更多