程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 編程語言 >> 更多編程語言 >> 編程綜合問答 >> dialog-android怎麼確定對話框返回的值是true還是false?

dialog-android怎麼確定對話框返回的值是true還是false?

編輯:編程綜合問答
android怎麼確定對話框返回的值是true還是false?

似乎沒有簡單的方法獲得一個警告框來返回一個簡單的值。
下邊的代碼不起作用(答案變量不能設置在監聽器裡,事實上它甚至都沒有編譯)

public static boolean Confirm(Context context) {
    boolean answer;
    AlertDialog dialog = new AlertDialog.Builder(context).create();
    dialog.setTitle("Confirmation");
    dialog.setMessage("Choose Yes or No");
    dialog.setCancelable(false);
    dialog.setButton(DialogInterface.BUTTON_POSITIVE, "Yes", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int buttonId) {
            answer = true;
        }
    });
    dialog.setButton(DialogInterface.BUTTON_NEGATIVE, "No", new DialogInterface.OnClickListener() {
        public void onClick(DialogInterface dialog, int buttonId) {
            answer = false;
        }
    });
    dialog.setIcon(android.R.drawable.ic_dialog_alert);
    dialog.show();
    return answer;
}

注意:很重要的是這個方法是自己包含的,也就是說,它不依賴於外部變量或者是構造。僅僅是調用它然後獲得你的值,true或者是false。

所以,應該怎麼做?簡單的想法就是返回true或者是false,但是這似乎比它自己來獲得這些值復雜得多。
而且,setButton有這個表單:

dialog.setButton(int buttonId, String buttonText, Message msg)

但是不知道怎麼用到它,這個消息應該發到哪,發給誰,哪個處理器是被用到的?

最佳回答:


我想說我對我自己的答案很滿意,因為完全是靠我自己找到了一個簡單的方法。
但是事實是盡管我發現了返回一個值的方法(就是下邊的),但是它不起作用。
真正的問題是我想要一個同步的對話框,對話框在恢復代碼之前在dialog.show()之後等待用戶來回答
在android中沒有這樣的beast。所有的對話框都是異步的,所以dialog.show()只是在一些隊列中貼了這個對話框然後繼續。因此不能及時的得到答案。
對於所有的它的價值(沒什麼)下面你會在創建一個對話框的方法裡面找到怎麼設置一個值。也許這種技術還有其他的用途,不僅僅是在對話框的生命周期中。

下邊是一些相關信息,如果你用final boolean answer;替換boolean answer;我可能會說:它可能會在監聽器裡邊訪問內部變量,但是不可能為它分配一個新值,因為它是已經被聲明過了的了。=
這裡關鍵的問題出現了。
定義變量為

final boolean[] answer = new boolean[1];

一些人已經知道為什麼這個將起作用了。這裡的最後變量不是的單一的布爾數組,而是該數組本身。
所以現在你可以指定數組element [0]

dialog.setButton(DialogInterface.BUTTON_POSITIVE, "Yes", new DialogInterface.OnClickListener() {
    public void onClick(DialogInterface dialog, int buttonId) {
        answer[0] = true;
    }
});
. . .
return answer[0];

最終你能從你的方法中返回它。

  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved