0

Androidアプリケーションに3つのアクティビティがあります。アクティビティA、アクティビティB、アクティビティC。

アクティビティAでは、Json解析を行っており、バンドルを使用してその値をアクティビティ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に戻ったときです。アプリの力が突然閉じます。

私の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

4 に答える 4

1

これは、から戻ったときにBundle b = in.getExtras();戻るためです。nullActivity BActivity C

最初のケースでは、bundleからActivity Aを送信していますが、Activity Bからの場合は、で送信しActivity Cているとは思いません。したがって、(バンドルb)から取得しようとすると、が取得されます。bundleintentString di1 = b.getString("di1");nullNullPointerException

でアクセスを試みる前に、nullチェックを行ってください。bundleActivity 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))にnullpointer例外があります

そこにあるものを投稿できますか?バンドルに関連していると思います。アクティビティBでonSaveInstanceStateが呼び出されたときに値を保存し、それをonRestoreInstance状態で読み取り、バンドルを操作する前に、バンドルがnullかどうかを常に確認する必要があります。

于 2013-03-25T06:18:07.130 に答える
0

これは、バンドルがnullであるためです

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

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