SORU
8 Ocak 2010, Cuma


Diyaloglar / AlertDialogs: iletişim sırasında Nasıl "yürütme" block; (.NET tarzı)

Geldiğini fark etti .NET-çevre Im şimdi Diyaloglar Android nasıl çalıştığını anlamak için arıyorum.

.Çağırırken NET . ben^>MessageBox.(...) Gösterve bir pop-up iletişim oluşturur gösterir. Göstermek için çağrı düğmeleri, örneğin: pop-up mevcut ne olması gerektiğini belirtmek istiyorum

DialogResult myDialogResult = MessageBox.Show("My text here", "My caption here", MessageBoxButtons.YesNoCancel);

Gördüğünüz gibi, döner bir düğme açılır, düğmeye ne beni bilgilendirdiğiniz basıldığında bir DialogResult Göstermek için çağrı tıkladım. Not .NET, yürütme arayıp nerede çizgisinde durdu . ben^>(...) Gösteryapılır, bir düğmeye basıldığında değerini döndürür.

Yukarıdaki örnekte ben "Hayır" myDialogResult eşit olacaktır . tuşuna basın

myDialogResult == DialogResult.No

Bu buluyorum ./Pop-up çok kolay ve sezgisel oluşturma, Android pop-up oluşturma çok isterim kullanarak NET şekilde.

Yani, soru şu: eğer biri "" MessageBox.yürütme durdurmak için nasıl biliyor olmasıdır Göster, ve sonra Düğmesine basıldığında değeri (ve iletişim uzaklaşır) dönmek mi?

Saygılar


EDİT 1: Biraz daha açık olmak için:

Durdurmak ve kullanıcı Pencereyi bir düğmeye tıklayın seçmiştir kadar beklemek yürütme ihtiyacım var. Arama İletişim kutusunu göstermek için izleyen kod İletişim tıklandığında ne bağlıdır.

Ben Erich ve Alex aşağıda önerildiği gibi özelliği-yöntemleri ile kod yazma beri önermek, ne kullanamıyor. bu yüzden bir işe yaramayacak. Nedeni, devam edemem yani "normal çalıştırma". Bana bir örnek verelim:

Bana bir örnek verelim:

int nextStep = 0; // this variable will not be reached from within the onClick-methods

AlertDialog.Builder builder = new AlertDialog.Builder(this);
builder.setMessage("Hello!")
       .setPositiveButton("Ok", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                nextStep = 1; // *** COMPILER ERROR!! ***
            }
        })
        .setNegativeButton("Cancel", new DialogInterface.OnClickListener() {
            public void onClick(DialogInterface dialog, int id) {
                nextStep = 2; // *** COMPILER ERROR!! ***
            }
        })
        .create().show();

if (nextStep == 1)
{
    // then do some damage
}
else if (nextStep == 2
    // dont do damage

Eğer açılan seçim bağımlı olmak yürütme isteseydim, bir şekilde tüm değişkenleri yapmam gerekeceğini "normal çalıştırma" (bu durumda . ben^>nextStepbana cehennem azabı gibi geliyor bu özelliği yöntemleri, ve. mevcut

2 DÜZENLEYİN:

Başka bir bariz örnek bir popup soran olurdu . ben^>"Devam etmek istiyor musunuz"seçenekleri ile . ben^>"" . Evet ^/i>ve . ben^>""Hayır.

"Evet", bütün yöntemi aksi takdirde iptal edilmesi gerektiğini yürütme. devam etmelidir kullanıcı basarsa Ne güzel çözüyorsunuz?

Saygılar

CEVAP
8 Ocak 2010, Cuma


Ted, istemiyorum bunu, gerçekten :) En büyük nedeni olduğunu Eğer blok UI iş parçacığı sırada olduğunuzu gösteren bir İletişim olur blok iplik o ilgileniyor çizim ve taşıma olayları İletişim. İletişim tepkisiz olacağı anlamına gelir. Ayrıca eğer kullanıcı daha tıklatın için birkaç saniye daha iletişim alırsa ANRs neden olur.

Erich cevabı tam olarak ne ihtiyaç vardır. Ne olmadığını biliyorumistiyorumbunun bir önemi yok ama. Pek bir seçeneği yok yani eşzamanlı diyaloglar yazmaktan geliştiriciler önlemek için Android tasarladık.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • FND Films

    FND Films

    2 Mayıs 2006
  • foreignimage

    foreignimage

    13 HAZİRAN 2006
  • Helen Bradley

    Helen Bradle

    4 Mart 2008