2011-08-22 78 views
0

我認爲標題說明了一切。我是Android和JAVA的新手,我想知道是否可以將AlertDialog.Builder用於switch語句。Android AlertDialog.Builder switch語句

因此,例如,我怎麼能在這裏使用它:

case Activity.RESULT_OK: 

break; 

我只想讓用戶知道動作完成和成功,他只需要按下「確定」按鈕。

非常感謝!

PS:我已經導入:

import android.app.AlertDialog.Builder; 

回答

1

只要您的代碼返回到UI管理器,就可以執行該對話框。 記住,當你從你的方法返回到UI管理器時,你的代碼並不是真正繪製Dialogs和Toasts的代碼,只發生在你的代碼之外。

下面是你應該和不應該做的一個例子:

//in response of an OnClick method 

public void onClick(View v) { 
    switch(v.getId()) 
    { 
    case MYBUTTON1ID: 
    { 
     // show my alert here whatever method 
     MyShowAlert("Something wrong.. hit OK to continue"); 
     DoSomethingMore(); // << this is WRONG!!, would happen BEFORE your alertdialog 
     DoSomethingEvenMore(); // << wrong either 
     break; 
    } 

    case MYBUTTONID2: 
    { 
    DoSomething(); // << ok here 
    MyShowAlert("Ok, this would work"); 
    break; // << here we return to UI showing alert 
    } 
} 

} 

如果您需要做MYBUTTON1ID顯示模式,你更好地學習的AsyncTask,然後閱讀here

+0

明白了,謝謝! –

4

,只要你想這可能是簡單...例如:

case Activity.RESULT_OK: 
new AlertDialog.Builder(this) 
       .setMessage("Message") 
       .setPositiveButton("OK", null) 
       .create() 
       .show(); 
break; 

然而,推薦的方法是使用showDialog(int)方法:

case Activity.RESULT_OK: 
    showDialog(YOUR_DIALOG_ID); 
break; 

然後,重寫onCreateDialog方法:

@Override 
protected Dialog onCreateDialog(int id) { 
    switch (id) { 
     case YOUR_DIALOG_ID: 
      return new AlertDialog.Builder(this) 
       .setMessage("Message") 
       .setPositiveButton("OK", null) 
       .create(); 
    } 
    return super.onCreateDialog(id); 
} 

YOUR_DIALOG_ID只是一個整數常量。 這是爲什麼推薦?很高興你問。如果您這樣做,Android會知道您在重新創建活動時顯示對話框(例如,當用戶更改設備的方向時),因此它將被重新創建(手動顯示它時不會發生這種情況(除非你處理配置改變你的自我(我認爲你沒有做(或更多括號))))。

+1

值得注意到從Android 3.0(Honeycomb)開始,'showDialog' /'dismissDialog'模式已被棄用,以支持基於DialogFragment的系統。它更好! – Dave