2013-03-07 18 views
1

我想用OK和Cancel按鈕顯示一個提醒對話框,但我只能取消。當我評論取消按鈕,然後我得到確定按鈕。奇怪的。總之,這裏的代碼:AlertDialog ...沒有確定按鈕,只有取消

final AlertDialog ukucajIme = new AlertDialog.Builder(Kviz.this).create(); 
      ukucajIme.setTitle("Insert your name"); 
      final EditText input = new EditText(Kviz.this); 

      ukucajIme.setView(input); 

      ukucajIme.setButton("Ok", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int whichButton) { 
        Editable ukucanoIme = input.getText(); 
        finish(); 
        } 
       }); 
      ukucajIme.setButton("Cancel", new DialogInterface.OnClickListener() { 

       public void onClick(DialogInterface dialog, int whichButton) { 
        ukucajIme.dismiss(); 
        finish(); 
        } 
        }); 
      ukucajIme.show(); 

而且問題二:每當我嘗試使用類似ukucajIme.setPositiveButton它給了我一個錯誤,並表示將其更改爲SET按鈕。這是爲什麼?使用方法setPositiveButton()setNegativeButton()在AlertDialogBu​​ilder這樣

AlertDialog.Builder builder = new AlertDialog.Builder(Kviz.this); 

builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog,int which) { 
    Editable ukucanoIme = input.getText(); 
    finish(); 
}); 


builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     dialog.dismiss(); 
     finish(); 
     dialog.cancel(); 
    } 
}); 

AlertDialog dialog = builder.create(); 
+0

你打電話.create()太早。按照下面的答案,然後創建AlertDialog – ElefantPhace 2013-03-07 18:37:41

回答

5

嘗試。

用兩個按鈕創建警報對話框。 setPositiveButton()用於在警報對話框中創建正向按鈕,setNegativeButton()用於調用負向按鈕以警告對話框。

AlertDialog.Builder alertDialog = new AlertDialog.Builder(Kviz.this); 
ukucajIme.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog,int which) { 
     Editable ukucanoIme = input.getText(); 
     finish(); 
    } 
}); 

// Setting Negative "Cancel" Button 
ukucajIme.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
     finish(); 
     dialog.cancel(); 
    } 
}); 

ukucajIme.show(); // Showing Alert Message 
+0

關閉,這些方法是AlertDialog.Builder,而不是AlertDialog ... – Sam 2013-03-07 18:31:11

+1

公平我從來沒有說過,他們打算在實際的對話框實例上調用,我會更新我的答案:) – JustDanyul 2013-03-07 18:33:55

+0

我得到錯誤dismiss();.添加演員到'建設者'...(我改變了它,你忘了,它仍然是我的ukucajIme)。當我添加到它時,警報窗口不顯示。 – user2083882 2013-03-07 19:05:40

1

使用這樣

+0

'ukucajIme'是一個AlertDialog,而不是AlertDialog.Builder,所以它沒有這些方法。 – Sam 2013-03-07 18:32:30

1

警報對話框不包含setNegativeButton或setPositiveButton。相反使用:

ukucajIme.setButton(AlertDialog.BUTTON_POSITIVE, "OK", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog,int which) { 
    Editable ukucanoIme = input.getText(); 
    finish(); 
}); 


ukucajIme.setButton(AlertDialog.BUTTON_NEGATIVE, "Cancel", new DialogInterface.OnClickListener() { 
public void onClick(DialogInterface dialog,int which) { 
    ukucajIme.dismiss(); 
    finish(); 
}); 
+0

+1並直接回答作者的第二個問題,'setPositiveButton()'(etc)是[AlertDialog.Builder]中的方法(https://developer.android.com/reference/android/app/AlertDialog.Builder.html )。 – Sam 2013-03-07 18:37:27

+0

我收到錯誤「添加到ukucajIme」。 – user2083882 2013-03-07 19:07:35

0

好的,這裏是完整的代碼。我只是改變了一些變量。

AlertDialog.Builder builder = new AlertDialog.Builder(Kviz.this); 
        builder.setTitle("Ukucaj svoje ime"); 
        final EditText input = new EditText(Kviz.this); 
        builder.setView(input); 

        builder.setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
        public void onClick(DialogInterface dialog,int which) { 
         Editable ukucanoIme = input.getText(); 
         finish(); 
        } 
        }); 


        builder.setNegativeButton("Cancel", new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
           dialog.dismiss(); 
           finish(); 
         } 
        }); 
        builder.show(); 
        AlertDialog dialog = builder.create(); 
相關問題