Android alertdialog não mostra botões ou mensagem de rádio
-
26-09-2019 - |
Pergunta
No meu aplicativo, trago um menu de contexto em um clique longo em uma listatividade. Uma das opções "prioritária" aparece um alertdialog com 3 opções de botão de rádio. O problema é que ele exibe uma caixa de diálogo vazia sem minhas 3 opções ou a mensagem que eu defino. Aqui está o meu código ..
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;
}
Se eu substituir o .SetSingLechoiceItems por um botão positivo e negativo, ele exibe os botões e a mensagem conforme o esperado. O que estou fazendo de errado ao configurar minha lista de botões de rádio? Aqui está o meu código de chamada também ..
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);
}
}
Solução
Descobriu! Eu estava usando o Builder.SetMessage em uma caixa de diálogo SingleChoiceItem em vez do Builder.Settitle. Parece que os diálogos usando opções de botão de rádio não suportam a configuração de uma mensagem, apenas um título. Parece estranho que o método seja fornecido. De qualquer forma, aqui está o código de trabalho ..
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;