2010-12-02 11 views
31

Bir sınav geliştiriyorum ve devam etmeden önce tüm soruları yanıtlaması için kullanıcıya ihtiyacım var. Kullanıcı tüm soruları cevaplamadığında, onu bilgilendiren basit bir uyarı mesajı görüntülüyorum. Sorun ne yaparsam yapayım kapanır. Neden çalışmıyor dialog.cancel değil `Bu kodu verilmiştir:?Bir Android alertdialogunu nasıl kapatırım

AlertDialog.Builder ad = new AlertDialog.Builder(this); 
ad.setTitle("Unanswered Questions"); 
ad.setMessage("You have not answered all the questions."); 
ad.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
    dialog.cancel(); 
} 
}); 
ad.show(); 
+1

Kodunuzu kod etiketlerine sarın, böylece soru okunabilir. – jacknad

+1

denemedi()? Çalışması gereken – Vjy

+0

. Her adımda hata ayıklamayı denemenizi ve ad.show() 'ın çağrıldığını görmenizi öneririz. Oh ve onClick yöntemi de. – achie

cevap

24

deneyin ben koyarak denemek istiyorum

dialog.cancel()

+1

Merhaba Cevaplar için teşekkürler. Dialog.dismiss() yöntemini zaten denedim ve bu da çalışmıyor. Yani sanırım her adımda hata ayıklama tavsiyesinde bulunmam gerekiyor. – Engmex

+5

dismiss() bir AlertDialog için mevcut değil, yalnızca düzenli iletişim kutuları için –

1

kullanmak yerine

dialog.dismiss()

kullanarak

Log.e("SOMETAG", "dialog button was clicked"); 

bu bölümden gerçekten ulaşıp ulaşmadığını görmek için kodunuzdaki dialog.dismiss() satırından önce.

8

koymak OnCreate bu hat()

Context mcontext=this;  

ve onları başarıyla çalıştıran .. bu kodu deneyin kodu

final AlertDialog.Builder alert = new AlertDialog.Builder(
           mcontext); 
         alert.setTitle(title); 
         alert.setMessage(description); 
         alert.setPositiveButton("Ok", 
           new DialogInterface.OnClickListener() { 

            @Override 
            public void onClick(DialogInterface dialog, 
              int which) { 
             dialog.cancel(); 
            } 
           }); 
         alert.show(); 

aşağıdaki bu değişkeni kullanan ..

7

Kullanım setNegative butonu, Pozitif tuşa gerek yok! Ben kendisi dismiss() veya cancel() yöntem içermiyor

+1

Neden düşüş var? –

0
final AlertDialog.Builder alert = new AlertDialog.Builder(mcontext); 
alert.setTitle(title); 
alert.setMessage(description); 
alert.setPositiveButton("Ok", 
new DialogInterface.OnClickListener() { 
    @Override         
    public void onClick(DialogInterface dialog,int which) { 
     cancelDialog(); //Implement method for canceling dialog 
     } 
    }); 
alert.show(); 
void cancelDialog() 
{ 
    //Now you can either use 
    dialog.cancel(); 
    //or dialog.dismiss(); 
} 
68

AlertDialog.Builder x kazanacak söz veriyorum.

İletişim Kutusu'u oluşturmanıza yardımcı olacak bir kolaylık sınıfı vardır, bu yöntemlere erişilebilen DOES'tir.

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

AlertDialog alert = builder.create(); 

alert.show(); 

sonra uyarı (değil oluşturucu)

+0

hala oluşturucu ile oluşturulduğunda bir tıklama dinleyicisi uyarısı nasıl kullanabilirsiniz ... lütfen açıklayın –

+1

Benim Java biraz paslı ama önce AlertDialog nesnesini oluşturmanız gerekir ve sonra setButton (BUTTON_POSITIVE,) çağrısı Tamam ", DialogInterface.OnClickListener dinleyicisi) AlertDialog nesnesinde. http://developer.android.com/reference/android/app/AlertDialog.html#setButton%28int,%20java.lang.CharSequence,%20android.content.DialogInterface.OnClickListener%29 – PowerAktar

+0

Yukarıdaki koddaki kod sadece çalışır. Doğru cevap – Sandeep

0

basitçe AlertDialog görünür aktivitesini veya başka bir aktiviteyi yeniden başlatabilirsiniz bağlıdır üzerinde alert.cancel() yöntemini çağırabilirsiniz: Burada

bir örnektir kararın. etkinliğini yeniden başlatmak istiyorsanız, bu kullanın finish(); startActivity (getIntent());

2
AlertDialog.Builder builder = new AlertDialog.Builder(this); 
AlertDialog alert = builder.create(); 
alert.show(); 

Yukarıdaki kod ama onClick yöntemi içinde kendisine ulaşabilmesi böylece alert global değişken emin olun çalışır.

+0

İletişim kutusunu hatırlamak için global bir değişkene gerek yoktur. Onclick yönteminde ilk argüman olarak geri alırsınız. – Bananeweizen

+0

İhtiyaç duyuyorsanız, bir yere atılmak istiyorsanız ELSE. Bu, özellikle özel bir uyarı ile AlertDialog.OnClickListener –

0
alertDialog.setPositiveButton("SAVE", 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         /*Write your code here */ 
         dialog.dismiss(); 
        } 
       }); 
     alertDialog.setNegativeButton("CANCEL", 
       new DialogInterface.OnClickListener() { 

        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.dismiss(); 

        } 
       }); 
+0

uygular. Stackoverflow'a hoş geldiniz. Bu yanıt, programcılar için nasıl çalıştığını anlamak için biraz daha fazla açıklama gerektirebilir. – Daenarys

5
AlertDialog.Builder ad = new AlertDialog.Builder(this); 
ad.setTitle("Unanswered Questions"); 
ad.setMessage("You have not answered all the questions."); 
ad.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int id) { 
    dialog.dismiss(); 
} 
}); 
ad.show(); 
1

Kullanım Diyalog yerine AlertDialog

AlertDialog dismiss() yok ama AlertDialog setPositiveButton() gibi düğme için bazı yöntemler vardır.

Eğer özelleştirilmiş iletişim kutusu istiyorsanız Dialog'u kullanmanız önerilir.

3

Eski bir gönderiyi yanıtla, ancak umarım birileri bunu yararlı bulabilir. ,

builder.dismiss(); 
0

yerine bu

final AlertDialog builder = new AlertDialog.Builder(getActivity()).create(); 

Daha sonra devam edebilir ve yapabilir misiniz ben PowerAktar çözümünü çalıştı, ama AlertDialog ve Oluşturucu hep ayrı parçalar tuttu. Peki "gerçek" AlertDialog nasıl edinilir?

Ben show-Dialog'da benim çözüm bulundu: İletişim kutusunu görüntülemek için
ad.show(); 

yazın. Şovun yardımıyla "Bu kurucuya verilen argümanlarla bir AlertDialog yaratır ve Dialog.show() 'ın iletişim kutusu." Böylece diyalog nihayet burada yaratıldı. Show() - Command'ın sonucu AlertDialog'un kendisidir.

adTrueDialog.cancel() 

... o) (iptal etmek mümkündür Bununla

AlertDialog adTrueDialog; 
adTrueDialog = ad.show(); 

adTrueDialog veya düğmeler iletişim içinde komuta çalıştırmak için: Yani bu sonucu kullanabilirsiniz

Button buttonPositive = adTrueDialog.getButton(Dialog.BUTTON_POSITIVE); 
buttonPositive.performClick(); 
-2

Zaten pozitif ve negatif butonu kullanıyorsanız (projemde yaptığım gibi) diyaloğu kapatmak için Nötr Düğmesini kullanabilirsiniz.

Ayrıca, Android sürüm> 5 iletişim kutusunun iletişim penceresinin dışına tıklanarak kapatıldığını, ancak eski sürümde bunun gerçekleşmediğini fark ettim.

ad.setNeutralButton("CLOSE", new DialogInterface.OnClickListener(){ 
    @Override 
    public void onClick(DialogInterface dialog, int which) { 
     // close dialog 
    } 
}); 
+0

Yanlış, '.setCancelable (bool)', pencerenin dışına tıklama davranışını tanımlamak için kullanılır. –

+0

@ M.Haché bir şey fark ettiğimi söyleyerek yanlış nedir? Bunun zorunlu davranış olduğunu söylemedim. Farklı işletim sistemleriyle iki farklı cihazda test ettim .... – nmirkov

+0

Yaşadığınız bir şeyi paylaşmakta yanlış bir şey yok. Ancak, yazdıklarınız yanıltıcıdır ve hızlı bir google arama yardımıyla geliştirilebilir. –

İlgili konular