2013-05-07 23 views
7

Iletişimimi görüntülemek ve yok etmek için showDialog ve dismissDialog kullanıyorum. Diyaloğa referans veren bir değişken bulundurmadan, halihazırda görüntülenen diyalogda bir tıklama komutu yayınlamanın bir yolu var mı? Örneğin, iletişim kutusunun 'Tamam'/pozitif düğmesine kod aracılığıyla basmak istiyorum.AlertDialog'da kod aracılığıyla 'OK' nasıl tıklanır?

AlertDialog.Builder alBuilder = new AlertDialog.Builder(this); 
     alBuilder 
       .setMessage("Do you wamt to exit?") 
       .setPositiveButton("Yes", 
         new DialogInterface.OnClickListener() { 

          @Override 
          public void onClick(DialogInterface dialog, 
            int which) { 
           dialog.cancel(); 
           // Write your code here for Yes 
          } 
         }) 
       .setNegativeButton("No", 
         new DialogInterface.OnClickListener() { 

          @Override 
          public void onClick(DialogInterface dialog, 
            int which) { 
           dialog.cancel(); 
           // Write your code here for No 
          } 
         }); 
     alBuilder.setCancelable(false); 
     alBuilder.show(); 
+0

İletişim kutusunu kurmak için bir oluşturucu mu kullanıyorsunuz? – TronicZomB

+0

@TronicZomB: Evet, 'Builder'ı kullanıyorum ve iletişimimi kurmak için 'Activity' içinde onCreateDialog'unu geçersiz kılıyorum. – Arci

+1

Tamam, bakriOnFire, cevabını fark etmeden hemen önce yayınlayacağımın oldukça iyi bir örneğine sahip. Bu, kodunuzu benzer şekilde modellemek isteyeceğiniz şeydir. – TronicZomB

cevap

25

Bu kodu test değil ancak çalışması gerekir:

AlertDialog dialog = ... 
dialog.getButton(DialogInterface.BUTTON_POSITIVE).performClick(); 

Alternatif olarak, iletişim başvuru tutmak istemiyorsanız fakat: -

+0

Teşekkürler, ancak Builder kullanıyorum ve bir 'getButton' yöntemine sahip değil. Gerçek diyalog referansı kalmadan 'OK' düğmesine basmanın bir yolu var mı? – Arci

+2

İletişim kutusuna bir referans tutabiliyorsanız, AlertDialog örneği, AlertDialog.Builder # show() tarafından döndürülür. Aksi takdirde, tıklama-tıklama mantığını ayrı bir yönteme taşımak mümkün mü? Bir tıklamayı simüle etmek yerine sadece tıklama kodunu çalıştırabilir ve iletişim kutusunu kapatabilirsiniz. –

+0

Evet, bir 'AlertDialog' döndürdü, ancak 'AlertDialog' ifadesini başvuran bir değişken tutmak istemiyorum. İletişim kutusunun kimliğine sahip olduğum 'Etkinliği' kullanarak iletişim kutusuna erişmenin bir yolu var mı? – Arci

-1

bu deneyin

AlertDialog.Builder builder = ... 
builder.setPositiveButton("OK", new DialogInterface.OnClickListener() { 
    public void onClick(DialogInterface dialog, int which) { 
    onPositiveButtonClicked(); 
    } 
}); 

ve 0 uygulamak: kendi kurulum kontrolünde olan, başka bir yöntemle içine tıklama koduna ayıklamak Aktivitenizde. Tamam düğmesini programlamak yerine onPositiveButtonClicked() ve dismissDialog(id)'u arayabilirsiniz. Birden çok iletişim kutusunu kullanmanız gerekiyorsa, onPositiveButtonClicked bir id parametresi alın.

+0

Teşekkürler! Ama bence sorumu yanlış anladın. – Arci

+0

ur kodunu yazabilmemiz için, ne istediğini anlayabilelim .. – bakriOnFire

+0

activity.getActiveDialog (DIALOG_ID) .getButton (...). PerformClick() 'gibi bir şey arıyorum. Tıpkı DIALOG_ID'yi kullanarak diyaloğu reddedebileceğiniz "activity.dismissDialog (DIALOG_ID)" gibi. – Arci

4

kod

Evet aracılığıyla diyalog 'Tamam'/pozitif düğmesine basın istiyorum, POSITIVE BUTTON örneğini alarak bunu ve daha sonra üzerine performClick() çağırabilir. olarak deneyin:

Button okButton = alertDialog.getButton(DialogInterface.BUTTON_POSITIVE); 
okButton.performClick(); //<<< click Button using code 
+0

Teşekkürler! Ama eğer '' değişkenine referansım yoksa? Sadece 'Aktivite' ('dismissDialog' gibi) kullanarak' POSITIVE' düğmesine erişmenin bir yolu var mı? – Arci

İlgili konular