主にAndroid 2011年03月29日

主にAndroid

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

スポンサーサイト 

--/--/--
--. --:--

上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。
スポンサードリンク

[edit]

CM: --
TB: --

page top

ダイアログ作成 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

2011-03

上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。