希望するものはstartActivityForResult()
です。 C
からD
に移動するときは、startActivity()
を使用する代わりにstartActivityForResult()
を使用してください。その後、D
からC
に戻る場合はIntent
オブジェクトを含むsetResult()
オブジェクトを使用し、extras
を返してC
に渡します。
onBackPressed()
に入力しないでください。にはがありますが、これはユーザーが期待するものではないためです。代わりに、Button
クリックなどのイベントでこのデータを返す必要があります。あなたは
Intent i = new Intent();
i.putExtra(); // insert your extras here
setResult(0, i);
を返しする準備ができたら、あなたがC
に戻ったとき、あなたは、このメソッド(taken from the Docs)を入力しますD
で、その後
Intent i = new Intent(new Intent(C.this, D.class);
startActivityForResult(i, 0);
ようなことを行いますC
にそう
、
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == PICK_CONTACT_REQUEST) {
if (resultCode == RESULT_OK) {
// A contact was picked. Here we will just display it
// to the user.
startActivity(new Intent(Intent.ACTION_VIEW, data));
/*
can also get the extra sent back through data
using data.getStringExtra("someKey");
assuming the extra was a String
*/
}
ああ、もう一度試してみる必要があります。私は前に間違った方法で使用しているに違いない。 – sftdev
これは可能です。最初はどのように動作するかを理解するまで、混乱しやすいです。これは、あなたを始めさせるのには十分であるはずですが、私がリンクしているドキュメントや、GoogleやSOのチュートリアルや例にもまともな例があります。 – codeMagic
結果を設定した後、 "返す準備ができました" ?私は 'finish()'と呼ぶべきでしょうか? –