インテントを設定してアクティビティAからアクティビティBを開始しようとしIntent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK
ていますが、アクティビティBからアクティビティAにデータを取得したいのですが、startactivityforresult
現在使用している問題はsetresult
、アクティビティBから呼び出しているときに発生することです。その後、私のアクティビティAonactivityresult
は呼び出されません。
誰かがこれが起こっている理由を教えてもらえますか?(NEW_TASKとCLEAR_TASK)でstartactivityforresultを使用できない場合は、これの代わりに何を試すことができますか?
また、アクティビティBを開きたいときにバックスタックをクリアしたいので、上記の2つのインテントを使用しようとしています。
アクティビティAで
Intent intent = new Intent(A.this, B.class);
Bundle args = new Bundle();
args.putString("from", "A");
intent.putExtras(args);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivityForResult(intent, 111);
アクティビティBについて
Intent resultIntent = new Intent();
resultIntent.putExtras(data.getExtras());
setResult(Activity.RESULT_OK, resultIntent);
finish();
あなたの質問への答えは簡単です:
フラグIntent.FLAG_ACTIVITY_NEW_TASKは、startActivityForResult()と互換性がありません。
したがって、機能しません。フラグ「FLAG_ACTIVITY_NEW_TASK」が追加されたインテントによって開始されたアクティビティは、結果を返すことができません。
これは、これを指定するAndroidドキュメントの一部です。
それは言う:
このフラグは、呼び出し元が起動中のアクティビティの結果を要求している場合は使用できません。
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加