2012-12-13 76 views
-1

我有振動和搖動議案我想顯示對話框。當有多個搖動執行時,我有問題,因此會顯示多個對話框。我想在時間只顯示一個對話框。android如果顯示對話框

所以我寫了這段代碼,但它顯示錯誤。一號線要 「最終AlertDialog」 和另一行希望它沒有 「最終」

 public void onShake() { 

     final AlertDialog builder = null; 
     if(!builder.isShowing()){ 

      builder = new AlertDialog.Builder(getParent()).create(); -- error if final is casted on AlertDialog -- "The final local variable builder cannot be assigned. It must be blank and not using a compound assignment" 

      builder.setTitle("Shake"); 


      builder.setButton("OK", new DialogInterface.OnClickListener(){ 
       public void onClick(DialogInterface dialog, int which){ 
        builder.dismiss(); -- requires final AlertDialog -- "Cannot refer to a non-final variable builder inside an inner class defined in a different method" 

       } 
      }); 
      builder.show(); 

     }} 

編輯:謝謝,dialog.builder();看起來工作。但現在我遇到了新的問題 - NullPointerException,拋出線我檢查是否顯示警報對話框。 現在我嘗試:

if(builder.isShowing() == false) 

固定的NullPointerException

if(builder == null){ 
builder.setButton("OK", new DialogInterface.OnClickListener(){ 
       public void onClick(DialogInterface dialog, int which){ 
        dialog.dismiss(); 
        builder = null; 
} 
} 

回答

2

變化builder.dismiss()dialog.dismiss()

+0

這看起來很有用,但請你看看我的編輯。 –

+0

嘗試只創建一次對話框,以便您檢查它是否已創建,如果是,則顯示 –

+0

我認爲這不會對我有用,因爲我想讓另一個對話框可用,如果用戶關閉第一個對話框並再次晃動。 –

0

刪除builder.dismiss();dialog.dismis()取代它,在收聽你這相當於一個對話框對象事件被觸發的對話框

0

將AlertDialog聲明爲活動中的字段,並且不需要將其設置爲final。