2012年9月20日木曜日

AndroidのSpinnerのダイアログ画面をonStopとかで閉じる方法

Androidの標準パーツであるSpinnerはタップしたらダイアログが出せたりしてとっても便利ですがその出てくるダイアログの制御が出来ない。
主に画面を閉じた時に自動的にダイアログも閉じて欲しかったのですが上手くいかないので調べてみたら以外と記事なかったのでメモ書き。

@Override
protected void onStop() {
    super.onStop();
    ViewGroup content = (ViewGroup) findViewById(android.R.id.content);
    Spinner spinner = (Spinner) findViewById(R.id.spinner);
    content.removeView(spinner);
    content.addView(spinner);
}

記事にするほどでも無かったかな…。
Spinnerのソースコード見てみるとダイアログ自体は

private SpinnerPopup mPopup;

として持ってるんだけどこれ自体を触ってる場所はままあるんだけど

dialog.dismiss();

を実行してるのが

protected void onDetachedFromWindow() 

なので一旦ViewGroup内から削除→再追加としてあげるとスルッとうまくいきます。
まぁこんな特殊な使い方するぐらいなら自分で作るなりカスタマイズするなりした方が良いかも。

業務的に使う時の参考にでもしてください。

0 件のコメント:

コメントを投稿