Domanda

Nel mio app che apre un menu contestuale sulla lunga clic in un ListActivity. Una delle opzioni "Priorità" Visualizza un'AlertDialog con le scelte del tasto 3 radio. Il problema è, visualizza una finestra di dialogo vuota senza i miei 3 scelte, o il messaggio che ho impostato. Qui è il mio codice ..

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 io sostituire le .setSingleChoiceItems con un positivo e negativo tasto, invece, vengono visualizzati i pulsanti e il messaggio come previsto. Che cosa sto facendo di sbagliato nella creazione mia lista di pulsanti di scelta? Qui è il mio codice chiamante così ..

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);
    }
}
È stato utile?

Soluzione

figured it out! Stavo usando builder.setMessage su una finestra di dialogo singleChoiceItem invece di builder.setTitle. Sembra che le finestre di dialogo con le scelte dei pulsanti di opzione non supportano l'impostazione di un messaggio, ma solo un titolo. Sembra strano che il metodo viene fornito però. In ogni caso, ecco il codice di lavoro ..

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;
Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top