0

戻るボタンを押したときにオブジェクトのarrayListを別のアクティビティに送信するときに問題が発生しました。奇妙なことは、このarrayListを最初のアクティビティから2番目のアクティビティに送信して使用できることです。しかし、送り返そうとすると(戻るボタン)、アプリがクラッシュします。これは私がそれを行う方法です:

アクティビティ 1 から arrayList (および文字列) を送信します。

Intent intent = new Intent(v.getContext(), ShowDay.class);
        intent.putExtra("exerciseList", list);
        intent.putExtra("day", selectedFromList);
        startActivityForResult(intent, EDIT_TRAININGDAY_RESPONSE);

そして、2番目のアクティビティでこれを受け取ります:

Intent intent = getIntent();
        exercises = (ArrayList<Exercise>) intent.getSerializableExtra("exerciseList");
        day = intent.getStringExtra("day");

このアクティビティでは、次のことを行って送り返します。

 @Override
      public void onBackPressed(){        
            Intent intent = new Intent();
            intent.putExtra("exerciseList",exercises);
            intent.putExtra("day", day);
            setResult(RESULT_OK, intent);
            finish();
       }

そして、上記を受け取るために (アクティビティ 1 に戻ります)、私はこれを行っています:

 protected void onActivityResult(int requestCode, int resultCode, Intent data) {
         if (requestCode == EDIT_TRAININGDAY_RESPONSE) {
             if (resultCode == RESULT_OK) {

                Intent intent = getIntent();
                ArrayList<Exercise> newExerciseList = (ArrayList<Exercise>) intent.getSerializableExtra("exerciseList");
                String currentDay = intent.getStringExtra("day");
                     // Other code ...
                }
       }
}

戻るボタンをタップするとアプリがクラッシュし、何が問題なのか本当にわかりません。ですから、誰かがこれを理解してくれることを本当に願っています。

必要に応じて、ログ出力 (クラッシュ後) を次に示します。

12-26 18:10:56.151: E/AndroidRuntime(18849): FATAL EXCEPTION: main
12-26 18:10:56.151: E/AndroidRuntime(18849): java.lang.RuntimeException: Failure delivering result ResultInfo{who=null, request=0, result=-1, data=Intent { (has extras) }} to activity {com.pack.androidexam/com.pack.androidexam.ShowPickedProgram}: java.lang.NullPointerException
12-26 18:10:56.151: E/AndroidRuntime(18849):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3141)
12-26 18:10:56.151: E/AndroidRuntime(18849):    at android.app.ActivityThread.handleSendResult(ActivityThread.java:3184)
12-26 18:10:56.151: E/AndroidRuntime(18849):    at android.app.ActivityThread.access$1100(ActivityThread.java:130)
12-26 18:10:56.151: E/AndroidRuntime(18849):    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1243)
12-26 18:10:56.151: E/AndroidRuntime(18849):    at android.os.Handler.dispatchMessage(Handler.java:99)
12-26 18:10:56.151: E/AndroidRuntime(18849):    at android.os.Looper.loop(Looper.java:137)
12-26 18:10:56.151: E/AndroidRuntime(18849):    at android.app.ActivityThread.main(ActivityThread.java:4745)
12-26 18:10:56.151: E/AndroidRuntime(18849):    at java.lang.reflect.Method.invokeNative(Native Method)
12-26 18:10:56.151: E/AndroidRuntime(18849):    at java.lang.reflect.Method.invoke(Method.java:511)
12-26 18:10:56.151: E/AndroidRuntime(18849):    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:786)
12-26 18:10:56.151: E/AndroidRuntime(18849):    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553)
12-26 18:10:56.151: E/AndroidRuntime(18849):    at dalvik.system.NativeStart.main(Native Method)
12-26 18:10:56.151: E/AndroidRuntime(18849): Caused by: java.lang.NullPointerException
12-26 18:10:56.151: E/AndroidRuntime(18849):    at com.pack.androidexam.ShowPickedProgram.onActivityResult(ShowPickedProgram.java:98)
12-26 18:10:56.151: E/AndroidRuntime(18849):    at android.app.Activity.dispatchActivityResult(Activity.java:5192)
12-26 18:10:56.151: E/AndroidRuntime(18849):    at android.app.ActivityThread.deliverResults(ActivityThread.java:3137)
12-26 18:10:56.151: E/AndroidRuntime(18849):    ... 11 more
4

1 に答える 1

0

これを使って。行 getIntent を削除し、onActivityResult コールバックで受け取るデータを使用しました。

protected void onActivityResult(int requestCode, int resultCode, Intent data) {
     if (requestCode == EDIT_TRAININGDAY_RESPONSE) {
         if (resultCode == RESULT_OK) {

            //Intent intent = getIntent();
            ArrayList<Exercise> newExerciseList = (ArrayList<Exercise>) data.getSerializableExtra("exerciseList");
            String currentDay = intent.getStringExtra("day");
                 // Other code ...
            }
   }
}
于 2013-12-26T19:02:56.610 に答える