Android -Stuck with Bundles

时间:2013-03-25 06:13:18

标签: java android

我的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.

我的问题是当我从活动C回到B.我的App力突然关闭。

我的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(活动B)

4 个答案:

答案 0 :(得分:1)

这是因为当您从Bundle b = in.getExtras();返回null时,Activity B会返回Activity C

首先,您要将bundleActivity A发送到Activity B,但是当来自Activity C时,我认为您不会发送bundle 1 {} intent。因此,当您尝试从String di1 = b.getString("di1");(捆绑包b)null时,您将获得NullPointerException

在尝试访问bundle中的Activity B之前,请先进行 null 检查。

答案 1 :(得分:0)

  

我回按钮再次转到活动B

你没有关注android app guidlines。根本不应该有后退按钮。我非常确定你的应用程序正在执行intent.getExtras()

答案 2 :(得分:0)

第175行有一个nullpointer异常(在com.example.gprs.MainActivity.onCreate(MainActivity.java:175)

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

答案 3 :(得分:0)

这是因为您的捆绑包为空

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

if (b!=null) {
  // your code
}