2010-06-11 18 views
5

Uygulamamda bir ListActivity içinde uzun tıklama ile bir içerik menüsü getiriyorum. "Öncelik" seçeneklerinden biri 3 radyo düğmesi seçeneği ile bir AlertDialog açılır. Sorun şu ki, 3 seçeneğim veya belirlediğim mesaj olmadan boş bir iletişim kutusu görüntüler. Bunun yerine pozitif ve negatif düğmesiyle .setSingleChoiceItems değiştirin İşte benim kod ..Android AlertDialog radyo düğmeleri veya mesaj gösterilmiyorDaha önce

protected Dialog onCreateDialog(int id) { 
    AlertDialog dialog; 
    switch(id) { 
    case DIALOG_SAB_PRIORITY_ID: 
     final CharSequence[] items = {"High", "Normal", "Low"}; 

     AlertDialog.Builder builder = new AlertDialog.Builder(SabMgmt.this); 
     builder.setMessage("Select new priority") 
       .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int item) { 
       Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     dialog = builder.create();    
     break; 
    default: 
     dialog = null; 
    } 
    return dialog; 
} 

beklendiği gibi düğmeler ve mesajı görüntüler vardır. Radyo düğmeleri listemi oluştururken neyi yanlış yapıyorum? İşte benim çağıran kodum da ..

public boolean onContextItemSelected(MenuItem item) { 
    AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
    switch (item.getItemId()) { 
    case R.id.sabdelete: 
     // Correct position (-1) for 1 header 
     final SabQueueItem qItem = (SabQueueItem) itla.getItem(info.position-1); 
     SabNZBdUtils.deleteItem(qItem.getNzo_id()); 
     getQueue(); 
     ListView lv = getListView(); 
     View v = lv.findViewById(R.id.sablistheader); 
     setHeader(v); 
     itla.notifyDataSetChanged(); 
     return true; 
    case R.id.sabpriority: 
     showDialog(DIALOG_SAB_PRIORITY_ID); 
     return true; 
    default: 
     return super.onContextItemSelected(item); 
    } 
} 

cevap

22

Figured out out! Builder.setMessage'i builder.setTitle yerine bir singleChoiceItem iletişim kutusunda kullanıyordum. Radyo düğmesi seçimlerini kullanan diyalogların bir mesaj, sadece bir başlık ayarlamayı desteklemediği görülüyor. Yöntemin sağlanmış olması garip görünüyor. Neyse, işte çalışma kodu ..

protected Dialog onCreateDialog(int id) { 
    AlertDialog dialog; 
    switch(id) { 
    case DIALOG_SAB_PRIORITY_ID: 
     final CharSequence[] items = {"High", "Normal", "Low"}; 

     AlertDialog.Builder builder = new AlertDialog.Builder(SabMgmt.this); 
     builder.setTitle("Select new priority") 
       .setSingleChoiceItems(items, 0, new DialogInterface.OnClickListener() { 
      public void onClick(DialogInterface dialog, int item) { 
       Toast.makeText(getApplicationContext(), items[item], Toast.LENGTH_SHORT).show(); 
      } 
     }); 

     dialog = builder.create(); 
     break; 
    default: 
     dialog = null; 
    } 
    return dialog; 
+2

Teşekkür ederiz! Sadece bir saat boyunca kafamı duvara çarptı, uyarı mesajımın neden boş çıkmaya başladığını anlamaya çalıştım. – seanalltogether

+0

Çok teşekkürler. Bu çılgınca. ve bu bir yerlerde belgelenmiş olabilir. – njzk2

+0

Tanklar! Bu böcek için çıldırmıştım! –

İlgili konular