Frage

In meiner App bringe ich in einem ListActivity ein Kontextmenü auf langen Klick auf. Eine der Optionen „Priority“ erscheint einen Alertdialog mit 3 Optionsfeld Auswahl auf. Das Problem ist, es zeigt ein leeres Dialogfeld, ohne meine 3 Wahlen oder die Nachricht, dass ich eingestellt. Hier ist mein Code ..

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;
}

Wenn ich die .setSingleChoiceItems mit einem positiven und negativen Taste statt ersetzen, zeigt er die Tasten und die Nachricht wie erwartet. Was mache ich falsch meine Liste der Radio-Buttons in der Einrichtung? Hier ist meine Berufung Code als auch ..

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);
    }
}
War es hilfreich?

Lösung

es heraus! Ich war mit builder.setMessage auf einem singleChoiceItem Dialog statt builder.setTitle. Es scheint, dass Dialoge Optionsfeld Auswahl mit nicht unterstützen eine Nachricht einstellen, nur einen Titel. Es scheint seltsam, dass das Verfahren zwar vorgesehen ist. Wie auch immer, hier ist der Arbeitscode ..

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;
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top