2013-05-25 17 views
55

startActivityForResult()を使用してアクティビティが呼び出されたか、またはstartActivity()を使用して開始されたアクティビティがあるかどうかを知ることはできますか?アクティビティが呼び出されたかどうかのチェック

私はこれを制御する必要があります。結果が呼び出された場合、その動作が異なるでしょう。

答えて

117

アクティビティがstartActivity()で開始された場合、対象アクティビティのgetCallingActivity()メソッドはnullを返します。

startActivityForResult()によって呼び出されたとき、呼び出しアクティビティの名前が返されます。 getCallingActivity()ため

参照ドキュメント:

戻るこの活動を呼び出したアクティビティの名前。これは、setResult()のデータを送る です。この 情報を使用して、受信者が データを受信できることを検証できます。

注:呼び出し側の活動が、結果を期待されていない場合(つまり、 が が要求コードが含まれていることをstartActivityForResult(Intent, int)フォームを使用していないです)、その後、呼び出し元のパッケージはnullになります。

戻り

お返事を受け取る活動のコンポーネント名がない場合はnull。

+0

これは私が必要とするものです。 ありがとう! – TiagoM

+0

FLAG_ACTIVITY_NEW_TASKでアクティビティを開始した場合、動作しません:((エラーハンドラのコンテキストからログインアクティビティを開始しなければなりませんでした)その他のアイデアですか?ありがとうございました! – bentzy

+0

アクティビティがフラグメントで始まっています:fragment.getActivity()。startActivityForResult(intent、requestCode); –

関連する問題