0

それを呼び出したアクティビティに結果を返したい別のアクティビティを開始しました。いくつかのチュートリアルを読んで試してみましたが、次のようなエラーが発生しました。

08-23 17:48:58.005: E/AndroidRuntime(581): java.lang.RuntimeException: Failure delivering result ResultInfo{who=Tab2, request=0, result=-1, data=Intent { cmp=com.organizer.medical.activities/.AddPatientActivity (has extras) }} to activity {com.organizer.medical.activities/com.organizer.medical.activities.Main}: java.lang.NullPointerException
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityThread.deliverResults(ActivityThread.java:2980)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityThread.handleSendResult(ActivityThread.java:3023)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityThread.access$1100(ActivityThread.java:123)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1177)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.os.Handler.dispatchMessage(Handler.java:99)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.os.Looper.loop(Looper.java:137)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityThread.main(ActivityThread.java:4424)
08-23 17:48:58.005: E/AndroidRuntime(581):  at java.lang.reflect.Method.invokeNative(Native Method)
08-23 17:48:58.005: E/AndroidRuntime(581):  at java.lang.reflect.Method.invoke(Method.java:511)
08-23 17:48:58.005: E/AndroidRuntime(581):  at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
08-23 17:48:58.005: E/AndroidRuntime(581):  at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
08-23 17:48:58.005: E/AndroidRuntime(581):  at dalvik.system.NativeStart.main(Native Method)
08-23 17:48:58.005: E/AndroidRuntime(581): Caused by: java.lang.NullPointerException
08-23 17:48:58.005: E/AndroidRuntime(581):  at com.organizer.medical.activities.PatientActivity.onActivityResult(PatientActivity.java:347)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityGroup.dispatchActivityResult(ActivityGroup.java:122)
08-23 17:48:58.005: E/AndroidRuntime(581):  at android.app.ActivityThread.deliverResults(ActivityThread.java:2976)
08-23 17:48:58.005: E/AndroidRuntime(581):  ... 11 more

呼び出しアクティビティのコードは次のとおりです。

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if (requestCode == 0) {
      if (resultCode == RESULT_OK) {
        int cat = Integer.parseInt(getIntent().getExtras().get("category").toString());
        loadList(cat);
       }
 }
}

これは、呼び出しアクティビティの oncreate() にあります。

startActivityForResult(new Intent(this, CalledActivity.class), ADD_PATIENT);

これは、「呼び出された」アクティビティのコードです。

   setResult(RESULT_OK, getIntent().putExtra("category", status.isChecked()?1:2));
   finish();

ところで、私の呼び出されたアクティビティでは、呼び出されたアクティビティのsetResult()ボタンによってfinish()のみ実行されます...onClick

の正しい使い方がよくわかりませんstartActivityForResult()。これについてあなたの知識を共有してください。

アップデート


私が onActivityResult() でアクセスしているインテントが null 例外エラーを引き起こしていることが判明し、そのメソッドで渡された「日付」変数がそのように使用されるものであることが判明しました:

int cat = Integer.parseInt(**data**.getExtras().get("category").toString());
4

2 に答える 2

1

こんにちは、この例は文字列を返しますが、例としては問題ありません。

Intent intent = new Intent();
Bundle b = new Bundle();
b.putString("lastPath", this.myPath.getText().toString());
intent.putExtras(b);
setResult(SUCCESS_RETURN_CODE, intent);
finish();

値を読み取るには、次を使用します。

Bundle b = data.getExtras();
lastPath = b.getString("lastPath");
于 2012-08-23T10:28:13.733 に答える
0

onActivityResult()でアクセスしているインテントがnull例外エラーを引き起こしていることが判明し、そのメソッドに渡された「日付」変数がそのように使用されるものであることが判明しました。

int cat = Integer.parseInt(data .getExtras()。get( "category")。toString());

于 2012-08-23T11:03:54.217 に答える