2010-12-29 3 views
0

Вот мой код:ShowDialog в деятельности не отображается диалоговое

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 не отображает диалоговое окно. Я использовал Debugger, и он выполняет эти инструкции, но диалог не отображается.

ответ

2

Вы не ломаетесь от своих операторов switch в onCreateDialog. Вы просто устанавливаете его значение null каждый раз?

+0

Я только что исправил это, но я все равно получаю «NullPointerException» в «String orderBy = bundle.getString (« column ») + bundle.getString (« order »); –

+0

Ну, если вы «все еще» получаете NPE, вы должны были упомянуть, что у вас есть NPE в первую очередь. Где вы определяете 'bundle'? Я просто вижу, что он используется. – Falmarri

+0

Извините, я забыл включить это. Исключение все же произошло. –

Смежные вопросы