0

这是我的代码:

public class TasksList extends ListActivity {
    ...
    private static final int COLUMNS_DIALOG = 7;
    private static final int ORDER_DIALOG = 8;
    private Bundle bundle = new Bundle();
    ...
     /**
     * @see android.app.Activity#onCreateDialog(int)
     */
    @Override
    protected Dialog onCreateDialog(int id) {
        Dialog dialog;
        final String[] columns;
        Cursor c = managedQuery(Tasks.CONTENT_URI, null, null, null, null);
        columns = c.getColumnNames();
        final String[] order = { "Ascending", "Descending" };

        switch (id) {
        case COLUMNS_DIALOG:
            AlertDialog.Builder columnDialog = new AlertDialog.Builder(this);
            columnDialog.setSingleChoiceItems(columns, -1, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    bundle.putString("column", columns[which]);
                }
            });
            dialog = columnDialog.create();
            break;
        case ORDER_DIALOG:
            AlertDialog.Builder orderDialog = new AlertDialog.Builder(this);
            orderDialog.setSingleChoiceItems(order, -1, new DialogInterface.OnClickListener() {
                @Override
                public void onClick(DialogInterface dialog, int which) {
                    String orderS;
                    if (order[which].equalsIgnoreCase("Ascending"))
                        orderS = "ASC";
                     else
                        orderS = "DESC";

                    bundle.putString("order", orderS);
                }
            });
             dialog = orderDialog.create();
             break;
        default:
            dialog = null;
            break;
        }

        return dialog;
    }
    /**
     * @see android.app.Activity#onOptionsItemSelected(android.view.MenuItem)
     */
    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case SORT_MENU:
            showDialog(COLUMNS_DIALOG);
            showDialog(ORDER_DIALOG);
            String orderBy = bundle.getString("column") + bundle.getString("order");

            Cursor tasks = managedQuery(Tasks.CONTENT_URI, projection, null, null, orderBy);
            adapter = new TasksAdapter(this, tasks);
            getListView().setAdapter(adapter);

            break;
        case FILTER_MENU:
            break;
        }
        return false;
    }
}

showDialog不显示对话框。我使用了调试器,它确实执行了这些语句,但没有显示对话框。

4

1 回答 1

2

您不会脱离 onCreateDialog 中的 switch 语句。您是否每次都将其设置为空?

于 2010-12-29T17:49:50.363 回答