私には2つの活動があります。それらをAとBと呼びましょう。
Aは、アプリの2か所から開始できるアクティビティです。Aが場所1または2のどちらから開始されたかを知りたいので、BIでは次のようにAを呼び出します。
Intent i = new Intent(B.this, A.class);
i.putExtra("code", code);
startActivityForResult(i, code);
(code
値が1のintです。)
AIのonCreateメソッドでこれを行います:
@Override
public void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
Intent i = getIntent();
Bundle extras = i.getExtras();
if(extras != null)
{
int code = extras.getInt("code");
if(code == 1)
{
ClearReleasesCache(); // just a private method of A
setResult(1, i);
finish();
return;
}
}
// do everything else as usual
setContentView...
}
さて、問題はこれです(私はデバッグでそれに気づきました):
コードがここに示すように、 BからAを起動するとき、Aを終了させたいです。Bではない別のアクティビティからAを起動するときは、通常どおりに実行する必要があります(実際に実行します)。ただしfinish()
、return
ここでは何もしません。デバッグ時に、return呼び出しの後、onCreateにジャンプして戻り、アクティビティがシャットダウンされないことがわかります。
つまりonActivityResult()
、Bでは呼び出されません。
ここで何が問題になっていますか?