10

私の Android アプリケーションでは、現在のゲームを再開するかどうかをユーザーに尋ねるために、メインのゲーム アクティビティで「現在のゲームを再開しますか? はい - いいえ」というダイアログを表示します。

問題は、ダイアログに応答せずにこのアクティビティを何度も再開すると、いくつかのダイアログが重なり合って表示されることです。これは明らかに私の目標ではありません。

Boolean var を使用してこの動作を簡単に回避できましたが、Dialog クラスに重複を防止するようなオプションがあるかどうか疑問に思っていました。

4

6 に答える 6

8

シングルトンパターンを使用できます。大まかに次のようになります。

Dialog myDialog = null;


public void showDialog() {
    if(myDialog == null) {
        /* show your dialog here... */
        myDialog = ...
    }
}


public void hideDialog() {
    if(myDialog != null) {
        /* hide your dialog here... */
        myDialog = null;
    }
}
于 2011-11-15T11:03:44.433 に答える
5
private Dialog mDialog;

private void showDialog(String title, String message) {
    AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(this)
            .setTitle(title)
            .setMessage(message);

    // Dismiss any old dialog.
    if (mDialog != null) {
        mDialog.dismiss();
    }

    // Show the new dialog.
    mDialog = dialogBuilder.show();
}
于 2016-12-22T01:57:46.187 に答える
4

ハックを行ったりブール値を使用したりするのではなく、Google 自体が提供する方法を使用できます。

public boolean isShowing ()

it ブール値を返します ダイアログが現在表示されているかどうか。

于 2015-04-08T18:14:06.533 に答える