Activity A:
int tag = 0;
startActivityForResult(new Intent(getApplication(), LoreAddActivity.class).putExtra("tag1", tag), 100);
@Override
protected void onActivityResult(int arg0, int arg1, Intent arg2) {
super.onActivityResult(arg0, arg1, arg2);
if(arg1==RESULT_OK){
switch (arg0) {
case 100:
tag2 = arg2.getIntExtra("tag2", 0);
break;
default:
break;
}
}
}
Activity B:
int tag = getIntent().getIntExtra("tag1",0);
Intent intent = new Intent();
Bundle bundle = new Bundle();
bundle.putInt("tag2", tag);
intent.putExtras(bundle);
setResult(RESULT_OK, intent);
finish();
意図に誤りがある可能性があります。 新しい Intent(XXX.this,LoreAddActivity.class) を試してください;
getApplication によって返されるアプリケーション オブジェクトもコンテキストを継承するため、次のように使用できます。しかし、ソースが明示的に指定されていない場合、コールバック、つまり setResult を受信するときに、B はそのインテントがどこから来たのかわかりません。上記は私の理解であり、参照のみです。間違いがある場合は、ご指摘ください。
アクティビティ A が返される限り、onActivityResult が実行されます。ログまたはデバッグを使用して、onActivityResult が実行されなかった場所を確認できます
2 つのアクティビティに対してどの起動モードを設定しましたか?
リーリー
この文は getApplication を使用しています。このモードで開始されたアクティビティは、デフォルトではそれを開始したアクティビティのタスク スタックに入ります。 getApplication メソッドで取得された Context には、タスク スタックの情報が含まれません。したがって、アクティビティを開始するときに getApplication を使用せず、アクティビティのコンテキストに置き換えることをお勧めします。