0

我的 Android 应用程序中有三个活动。活动 A 活动 B 活动 C ..

在 Activity A 中,我正在执行 Json Parsing 并使用 Bundles 将该值发送到 Activity B 并以多种方式处理它。

这是我在活动 B 中用来获取值的代码。

        Intent in = getIntent();
    Bundle b = in.getExtras();


    /*/----------Future Use ---------------------
    String id1 = b.getString("id");
    String mc1 = b.getString("machine_code");

    ------------------------------------------/*/


    String di1 = b.getString("di1");
    String di2 = b.getString("di2");
    String di3 = b.getString("di3");
    String di4 = b.getString("di4");
    String di5 = b.getString("di5");
    String di6 = b.getString("di6");
    String di7 = b.getString("di7");
    String di8 = b.getString("di8");

在活动 B 中。我有一个按钮可以移动到活动 C,在活动 C 中,我有返回按钮可以再次移动到活动 B。

我的问题是当我从 Activity C 回到 B.My App force 时突然关闭。

我的 logcat 错误如下所示。

03-25 11:22:31.699: E/AndroidRuntime(307): Uncaught handler: thread main exiting due to uncaught exception
03-25 11:22:31.719: E/AndroidRuntime(307): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.example.gprs/com.example.gprs.MainActivity}: java.lang.NullPointerException
03-25 11:22:31.719: E/AndroidRuntime(307):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2496)
03-25 11:22:31.719: E/AndroidRuntime(307):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
03-25 11:22:31.719: E/AndroidRuntime(307):  at android.app.ActivityThread.access$2200(ActivityThread.java:119)
03-25 11:22:31.719: E/AndroidRuntime(307):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1863)
03-25 11:22:31.719: E/AndroidRuntime(307):  at android.os.Handler.dispatchMessage(Handler.java:99)
03-25 11:22:31.719: E/AndroidRuntime(307):  at android.os.Looper.loop(Looper.java:123)
03-25 11:22:31.719: E/AndroidRuntime(307):  at android.app.ActivityThread.main(ActivityThread.java:4363)
03-25 11:22:31.719: E/AndroidRuntime(307):  at java.lang.reflect.Method.invokeNative(Native Method)
03-25 11:22:31.719: E/AndroidRuntime(307):  at java.lang.reflect.Method.invoke(Method.java:521)
03-25 11:22:31.719: E/AndroidRuntime(307):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
03-25 11:22:31.719: E/AndroidRuntime(307):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
03-25 11:22:31.719: E/AndroidRuntime(307):  at dalvik.system.NativeStart.main(Native Method)
03-25 11:22:31.719: E/AndroidRuntime(307): Caused by: java.lang.NullPointerException
03-25 11:22:31.719: E/AndroidRuntime(307):  at com.example.gprs.MainActivity.onCreate(MainActivity.java:175)
03-25 11:22:31.719: E/AndroidRuntime(307):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
03-25 11:22:31.719: E/AndroidRuntime(307):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
03-25 11:22:31.719: E/AndroidRuntime(307):  ... 11 more
03-25 11:22:31.760: I/dalvikvm(307): threadid=7: reacting to signal 3
03-25 11:22:31.760: E/dalvikvm(307): Unable to open stack trace file '/data/anr/traces.txt': Permission denied
03-25 11:22:37.569: I/Process(307): Sending signal. PID: 307 SIG: 9

在 logcat 中,您可以看到 MainActivity(即 Activity B)

4

4 回答 4

1

这是因为Bundle b = in.getExtras();返回null时返回Activity Bfrom Activity C

第一种情况,您将bundlefrom发送Activity AActivity B,但是当来自 时Activity C,我认为您不会发送bundlein intent。因此,当您尝试String di1 = b.getString("di1");null(Bundle b) 中提取时,您将获得NullPointerException.

在尝试访问. bundle_Activity B

于 2013-03-25T06:16:30.503 回答
0

我有返回按钮再次移动到活动 B

您没有遵循 android 应用指南。根本不应该有后退按钮。我很确定您的应用程序在执行时会中断intent.getExtras()

于 2013-03-25T06:17:48.277 回答
0

您在第 175 行有一个空指针异常(在 com.example.gprs.MainActivity.onCreate(MainActivity.java:175)

你能张贴那里有什么吗?我猜它与Bundle有关。当在活动 B 上调用 onSaveInstanceState 并读取它的 onRestoreInstance 状态时,您必须存储您的值,并在尝试使用它之前始终检查您的包是否为空。

于 2013-03-25T06:18:07.130 回答
0

这是因为您的捆绑包为空

bundle b = this.getIntent().getExtras();

if (b!=null) {
  // your code
}
于 2013-03-25T06:18:55.940 回答