主にAndroid ダイアログ作成 onCreateDialogについて

主にAndroid

Androidの情報を中心に、自分の備忘録を兼ねて書いてます

ダイアログ作成 onCreateDialogについて 

2011/03/29
Tue. 01:14

Activity#showDialog(ID) でダイアログを呼び出した場合、すでにActivity#onCreateDialog(ID) で作成してあれば、それが呼び出される。
つまりActivity#showDialog(ID)を呼び出す度に何度もインスタンスが作成される、なんてことはない。

そのため、自分でフィールドにDialogを作成して管理するより楽だし、スマートな気がする!


    private Dialog dialog;
 
    public void showDialog(View view){
        if(dialog == null)
            dialog = createDialog();
 
        dialog.show();
    }
 
    private Dialog createDialog() {
        Log.v("alert", "createDialog");
        AlertDialog.Builder d = new AlertDialog.Builder(this);
        d.setTitle("test");
        d.setMessage("message");
        return d.create();
    }

↑と↓は同じ動作だが、↓はDialogの初期化チェックのロジックを入れる必要がない。 ダイアログがいくつもある場合は、↓のほうがメンテナンスが楽。

    private static final int DIALOG_ID = 1;
 
    @Override
    protected Dialog onCreateDialog(int id) {
        Dialog d = super.onCreateDialog(id);
        switch (id) {
        case DIALOG_ID:
            d = createDialog();
            break;
        }
        return d;
    }
 
    public void showDialog(View view){
        showDialog(DIALOG_ID);
    }
 
    private Dialog createDialog() {
        Log.v("alert", "createDialog");
        AlertDialog.Builder d = new AlertDialog.Builder(this);
        d.setTitle("test");
        d.setMessage("message");
        return d.create();
    }
関連記事
スポンサードリンク

[edit]

CM: 0
TB: 0

page top

この記事に対するコメント

page top

コメントの投稿

Secret

page top

トラックバック

トラックバックURL
→http://beefsalt.blog79.fc2.com/tb.php/23-9e7464b5
この記事にトラックバックする(FC2ブログユーザー)

page top

2017-08
  • «
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • »