2012年6月29日金曜日

onActivityResultとsetResultについてメモ

Activityから設定画面などの別のIntentを呼び出した際の流れについて調べてみた。

呼び出したIntent(=Intent B)から結果を受け取るとき、呼び出したActivity(=Activity A)のonActivityResultをハンドリングして受け取るのだけど、Intent BでsetResultで結果をセットするのはどこが適切なのか、というのが気になって。

初め、Intent BのonStopで実行してみたのだけど、デバッガで処理を追ってみるとIntent BのonStopよりもActivity AのonActivityResultの方が先に呼び出されてることがわかった。

もっと詳しく調べてみると、Intent BでBACKボタンをタップした時、

Intent BのonKeyDownメソッド

Intent BのonBackPressedメソッド

Intent BのonWindowFocusChangedメソッド

Intent BのonPauseメソッド

Activity AのonActivityResultメソッド

Intent BのonStopメソッド

と、こんな順に呼び出されてる。なのでIntent BのonStop内でsetResultで結果をセットしても、Activity AのActivity AのonActivityResultメソッドではその結果を受け取る事が出来ない。

onWindowFocusChangedやonPauseメソッドは別アプリに切り替わった時などでも呼ばれるので却下。そこで、onBackPressedメソッドで


  @Override
  public void onBackPressed() {


      Intent intent = new Intent();
      intent.putExtra(KEY, VALUE);


      setResult(RESULT_OK, intent);
      finish();


      // TODO 自動生成されたメソッド・スタブ
      //super.onBackPressed();
  }


というようにすることでActivity AのonActivityResultメソッドで結果を受け取る事ができた。

2012年6月19日火曜日

Androidアプリの勉強中

こんな開設したばかりブログ、誰も見ていないと思うけど…。 昨年某会社からリストラされてから、就職活動を続ける傍ら、Androidアプリの作り方について勉強してみようと思ったわけです。 Androidアプリでは他のアプリとかぶらないpackage名を使用することになっていますが、Android Developersで登録するよりもブロクのアドレス(ドメイン名)を使ったほうがはるかに楽そうだったのでブロクを登録してみようと思ったわけです。 今は簡単なアプリの一本があらかた出来上がってきて、微調整する傍らGoogle Playに登録する方法について調べているところです。

2012年6月18日月曜日

登録してみた

一意なドメイン名が使えるようになるということで、登録だけしてみた。