onActivityResultが呼ばれない時が有る

2,516 views
Skip to first unread message

ob...@re.commufa.jp

unread,
Aug 3, 2012, 9:34:09 PM8/3/12
to 日本Androidの会
こんにちは

onActivityResultが呼ばれない時が有って困っています。

アActivityからstartActivityForResultを使用してイActivityを呼出します。
イActivityの終了時アActivityのonActivityResultが呼ばれます。
アActivityに制御が戻ります。
再度、、
アActivityからstartActivityForResultを使用してイActivityを呼出します。
イActivityの終了時アActivityのonActivityResultが呼ばれません。


これはどうしてでしょうか?

御存知の方、よろしくお願いします。


--
★☆★☆★☆★☆★☆★☆
   obott
★☆★☆★☆★☆★☆★☆

HideCheck

unread,
Aug 4, 2012, 12:39:18 AM8/4/12
to android-g...@googlegroups.com
呼ばれないということは無かったですが、launchModeをsingleTaskにするとonActivityResultの呼ばれるタイミングが違うことがありました。


2012年8月4日 10:34 <ob...@re.commufa.jp>:
> onActivityResult

ob...@re.commufa.jp

unread,
Aug 4, 2012, 4:11:19 AM8/4/12
to android-g...@googlegroups.com
すいません、、一度は呼ばれているのでlaunchModeは関係ないと思って明記していませんでした。

launchModeはstandardにしています。

呼ばれないと言うのはEclipseのデバッガ+シミュレータでの事で、、そのあたりの不具合も知れません、、、
ちなみにSDKは7=2.1にしています。


--
★☆★☆★☆★☆★☆★☆
   obott
★☆★☆★☆★☆★☆★☆

ob...@re.commufa.jp

unread,
Aug 4, 2012, 4:51:27 AM8/4/12
to android-g...@googlegroups.com

すいません、根本的なところでアクティビティが1段抜けていたので修正します。


アActivityからstartActivityを使用してイActivityを呼出します。
イActivityからstartActivityForResultを使用してウActivityを呼出します。
ウActivityの終了時イActivityのonActivityResultが呼ばれます。
イActivityに制御が戻ります。
再度、、特に何もしないですぐに、、
イActivityからstartActivityForResultを使用してウActivityを呼出します。
ウActivityの終了時イActivityのonActivityResultが呼ばれません。


アからイの呼び出しは以下の様にしています。
  Intent intent = null;
  intent = new Intent( アActivity.getApplicationContext(), イActivity.class);
  アActivity.startActivity( intent );


イからウの呼び出しは以下の様にしています。
  Intent intent = null;
  intent = new Intent( イActivity.getApplicationContext(), ウActivity.class);
  イActivity.startActivityForResult( intent, 0 );




--
★☆★☆★☆★☆★☆★☆
   obott
★☆★☆★☆★☆★☆★☆

Jun'ichi Hirayama

unread,
Aug 4, 2012, 7:32:51 AM8/4/12
to android-g...@googlegroups.com
ウの処理が完了したとき(onPauseなど)でActivity.finish()を起動してみたら
期待どうさになりませんか?





--
★☆★☆★☆★☆★☆★☆
   obott
★☆★☆★☆★☆★☆★☆

--
このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してください。
詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセスしてください。




--
BR
Jun'ichi

ob...@re.commufa.jp

unread,
Aug 4, 2012, 8:08:26 AM8/4/12
to android-g...@googlegroups.com
最初に、、 HideCheck さん   
 御礼を忘れてしまいました、、すいませんありがとうございました。

Jun'ichi さん

レスありがとうございます。


> ウの処理が完了したとき(onPauseなど)でActivity.finish()を起動してみたら

ウActivityにリストがあるので以下の様なアイテムクリックで終了しています。
public void onItemClick( AdapterView<?> parent, View view, int pos, long id )
↑の関数の中で
  Intent destIntent;
  destIntent = new Intent();
  destIntent.putExtra( "RESULTSTR", ResultStr);
  destIntent.putExtra( "RESULTNO", ResultNo);
  setResult( RESULT_OK, destIntent ); // これで受取先のonActivityResultが呼ばれるよ
  finish();
 条件に応じて↑を呼出して終了しています。


↑を毎回呼出しているのでなぜonActivityResultが呼ばれないのか解らないのです、、、

困っています、、、どなたか、、御存知の方よろしくお願いします。




(2012/08/04 20:32), Jun'ichi Hirayama wrote:
> ウの処理が完了したとき(onPauseなど)でActivity.finish()を起動してみたら
> 期待どうさになりませんか?
>
> 2012/8/4 <ob...@re.commufa.jp <mailto:ob...@re.commufa.jp>>
>
>
> すいません、根本的なところでアクティビティが1段抜けていたので修正します。
>
>
> アActivityからstartActivityを使用してイActivityを呼出します。
> イActivityからstartActivityForResultを使用してウActivityを呼出します。
> ウActivityの終了時イActivityのonActivityResultが呼ばれます。
> イActivityに制御が戻ります。
> 再度、、特に何もしないですぐに、、
> イActivityからstartActivityForResultを使用してウActivityを呼出します。
> ウActivityの終了時イActivityのonActivityResultが呼ばれません。
>
>
> アからイの呼び出しは以下の様にしています。
>   Intent intent = null;
>   intent = new Intent( アActivity.getApplicationContext(), イActivity.class);
>   アActivity.startActivity( intent );
>
>
> イからウの呼び出しは以下の様にしています。
>   Intent intent = null;
>   intent = new Intent( イActivity.getApplicationContext(), ウActivity.class);
>   イActivity.startActivityForResult( intent, 0 );
>
>
>
>
> --
> ★☆★☆★☆★☆★☆★☆
>    obott
> ★☆★☆★☆★☆★☆★☆
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com
> <mailto:android-g...@googlegroups.com> にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com
> <mailto:android-group-japan%2Bunsu...@googlegroups.com> にメールを送信してください。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアク
> セスしてください。
>
>
>
>
> --
> BR
> Jun'ichi
>
> --
> このメールは Google グループのグループ「日本Androidの会」の登録者に送られています。
> このグループに投稿するには、android-g...@googlegroups.com にメールを送信してください。
> このグループから退会するには、android-group-j...@googlegroups.com にメールを送信してく
> ださい。
> 詳細については、http://groups.google.com/group/android-group-japan?hl=ja からこのグループにアクセス
> してください。


--
★☆★☆★☆★☆★☆★☆
   尾保手 秀樹
★☆★☆★☆★☆★☆★☆

HideCheck

unread,
Aug 6, 2012, 9:35:52 PM8/6/12
to android-g...@googlegroups.com
まったく呼ばれないのか、呼ばれるタイミングが違うのか確認して下さい

以下のケースの場合期待した動作は保証されないようです
onActivityResultのActivityが終了している
それぞれのActivityが違うタスクで管理されている

2012年8月4日 21:08 <ob...@re.commufa.jp>:

ob...@re.commufa.jp

unread,
Aug 9, 2012, 3:45:05 AM8/9/12
to android-g...@googlegroups.com
HideCheck さん  レスありがとうございます

お返事が送れてすいません。

解決したのですが、、多忙でお返事の書き込みが遅れました。

理由は、
onWindowFocusChangedの中で今のアクティビィティを取得して、それを利用してToast等に渡す様に汎用的に
作っていたつもりでしたが、、
その部分にミスがあり、実際はonWindowFocusChangedの呼出順に依存してしまうようになっていました。
その為に
  2回目のイActivityからstartActivityForResultを使用してウActivityを呼出します。

  イActivityからウActivityのインスタンスでstartActivityForResultを使用してウActivityを呼出します。
と言うまったく変な事になっていまして、、、
onActivityResultがまったく呼ばれないと言う事になっていました。

まともに動いているように見えてたのが不思議です、、、(^^;)


--
★☆★☆★☆★☆★☆★☆
obott
★☆★☆★☆★☆★☆★☆
Reply all
Reply to author
Forward
0 new messages