7

私は2つの方法で開始する「アクティビティA」を想定したアクティビティを実行しました。a
StartActivity()
b)StartActivityForResult()
アクティビティの開始方法とは異なる動作をするメソッドがいくつかあります。結果として「アクティビティA」が開始されたことを検出したいと思います。では、結果を得るためにアクティビティが開始されたことをどのように検出できるのかという私の質問ですか?インテントを介してデータを送信したくありません。より一般化された他の方法はありますか?

ありがとうございました。

4

3 に答える 3

16

この回答から

アクティビティが startActivity() だけで開始された場合、ターゲット アクティビティの getCallingActivity() メソッドは null を返します。startActivityForResult() によって呼び出されると、呼び出し元のアクティビティの名前が返されます。

例:

if (getCallingActivity() == null) {
    //This Activity was called by startActivity 
} else {
   //This Activity was called by startActivityForResult
}
于 2015-03-10T14:12:23.147 に答える
1

で偽のデータを渡す必要はありませんIntent。アクティビティActivityには、呼び出された開始を確認するためのメソッドがありますgetCallingPackage()

ドキュメントから:

このアクティビティを呼び出したパッケージの名前を返します。これは、setResult() のデータの送信先です。この情報を使用して、受信者がデータの受信を許可されていることを確認できます。

于 2013-05-17T12:38:01.010 に答える
-1

を使用して呼び出されたときに、ブール値の Extraを送信します

intent.putExtra("mBool", true);
startActivityForResult(intent);

その値に応じて、それぞれのアクションが実行されます。

if(getIntent().hasExtra("mBool")){

//ForResult
}else{

//default
}
于 2012-12-24T09:01:15.177 に答える