Pregunta

En mi aplicación que aparezca un menú contextual de clic largo en un ListActivity. Una de las opciones de "prioridad" aparece un AlertDialog con opciones de botón de radio 3. El problema es, que muestra un cuadro vacío de diálogo sin mis 3 opciones, o el mensaje que puse. Aquí está mi 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;
}

Si sustituyo las .setSingleChoiceItems con un positivo y negativo en lugar botón, muestra los botones y el mensaje como se esperaba. ¿Qué estoy haciendo mal en la creación de mi lista de botones de radio? Aquí está mi código de llamada, así ..

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);
    }
}
¿Fue útil?

Solución

lo descubrió! Yo estaba usando builder.setMessage en un diálogo singleChoiceItem en lugar de builder.setTitle. Parece que los cuadros de diálogo utilizando las opciones de botón de selección no son compatibles con el establecimiento de un mensaje, solamente un título. Parece extraño que se proporciona el método sin embargo. De todos modos, aquí está el código de trabajo ..

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;
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top