2011-02-13 30 views
7

Saçlarımı bunun üzerinden çekiyorum.Android Giriş Diyalog Dönüş Giriş Değeri

Bir menü öğesine bastığınızda, bir giriş uyarısı iletişim kutusu göstermesini istiyorum bir uygulamasına sahibim. Kullanıcı "Tamam" a dokunduğunda, diyalogdaki EditText'e girdiği metin aktivitede daha sonra kullanılmak üzere döndürülmek ister.

Yani koyarak düşündüm:

name = input.getText().toString(); //input is an EditView which is the setView() of the dialog 

çalışacak "Tamam" düğmesinin onClick İçinde ama öyle değil. Eclipse, nihayetinde onClick'in adını belirleyemediğimi söylüyor çünkü bu son değil, ancak adın tanımını final olarak değiştirirsem açık bir şekilde değiştirilemez ve bu nedenle onClick() içinde ayarlanamaz.

String routeName = ""; 

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

     alert.setTitle("Title"); 
     alert.setMessage("Message"); 

     // Set an EditText view to get user input 
     final EditText inputName = new EditText(this); 
     alert.setView(inputName); 

     alert.setPositiveButton("Set Route Name", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int whichButton) { 
      routeName = inputName.getText().toString(); 
      } 
     }); 

     alert.show(); 

Ben yaş için etrafında googled ve aynı sorunla hiç kimse buldum çünkü burada gerçekten aptalca bir şey yapıyor olmalı:

İşte bu biraz tam koddur.

Lütfen beni aydınlatabilir misiniz?

+0

Lütfen başka kod yazın! – user432209

+0

Üzgünüm! Şimdi ana soruyla kod güncellendi. –

cevap

3

Nitekim

InfinitiFizz Zaman ayırdığınız için teşekkürler, sanırım anonim bir fonksiyondur sizin onlcick, içeride sadece anythingy olamıyorum. Yapabilecekleriniz bağlamı almak ve görüşlerinizi oradan bulmaktır. Böyle bir şey olacaktır: Ayrıca dinleyici içinde v.getContext() arayarak instace için, v argüman kullanabilirsiniz

yourButton.setOnClickListener(new View.OnClickListener() { 
      public boolean onClick(View v) { 
       name = findViewById(R.id.yourInputId)).getText().toString(); 
       return true; 
     } 
); 

.

+0

Cevabınız için teşekkürler Nanne, ama nerede "yourButton" tanımlayabilirim? Bu "Tamam" düğmesi mi? Çünkü AlertDialog'un bu düğmeyi oluşturmak için belirli bir setPositiveButton() yöntemine sahip olduğu görülüyor. Bu görünümde tanımlanmış bir düğmeyle iletişim kutusunun özel bir sürümü için özel bir görünüm oluşturabileceğimi ve bu düğmeyi tıklamanız içinButon findViewById düğmesini kullanabilir miyim? Üzgünüm hala uygun android geliştirme için oldukça yeni. –

+0

Sorunun ekini görmedim, ancak bu durumda gösterilecek bir şey olması sadece bir örnekti. Bu ilk bölümü görmezden gelebilir ve "setOnclickListener" bölümünden okuyabilirsiniz;) – Nanne

+0

Bunu yapmaya başladım ama yine de setOnClickListener'dan isim değişkenini nasıl alacağımı bilmiyordum ve bu sorunu çözmek için her şeyi kastettim. iletişim kutusunun bir işlevi olarak gelmesi ve bu işlevin onPositive() dinleyicisinin içinde çağrılması. –

2

routerName üye değişkeni yapabilirsiniz.

+0

Woah! Bu çok basitti! Teşekkürler foobaa, ama @Nanne 'ın findViewById kullanarak çalışma yolu almak için daha güzel/temiz olurdu? –

+0

Pekala, bu yöntemdeki sorun, kullanıcı iletişim kutusunun eşzamansız olması nedeniyle girdiyi yazarken kodun geri kalanının koşmasıydı. Benim çözümüm Nanne'a cevap verdiğim şeyi yapmaktı. –