2011-12-30 2 views
2

с помощью различных учебных пособий мне удалось написать настраиваемое диалоговое окно, отображающее список, заполненный записями из локальной базы данных. Я установил прослушиватели кликов и выяснил, как получить запись в элементе listview, щелкнув, установив курсор в возвращаемую позицию и т. Д. Теперь я хочу, чтобы этот диалог отклонялся, когда элемент был нажат, и автоматически откроет новое диалоговое окно с содержимым этого курсора как имя таблицы, из которой будет повторно заполнено новое представление listview. Я хотел бы знать, знает ли кто лучший способ сделать это с точки зрения структуры приложения. В настоящее время я звоню диалог мой, чтобы показать в моей деятельности, как это:Каков наилучший способ реализовать два настраиваемых диалога один за другим?

public void onClick(View view) { 
    switch(view.getId()) { 
    case R.id.pickerbutton: 
     showDialog(DIALOG_PICK_CATEGORY); 
     break; 
    } 
} 
protected Dialog onCreateDialog(int id) { 
    dialog = null; 
    switch(id) { 
    case DIALOG_PICK_CATEGORY: 
     CustomDialogList.Builder customBuilder = new 
      CustomDialogList.Builder(SendCookieActivity.this); 
     customBuilder.setTitle(R.string.category); 
     dialog = customBuilder.create(); 

     break; 
    } 
    return dialog; 
} 

После этого отображается диалоговое окно, пользователь выбирает категорию из диалогового окна CustomDialogList. Мне сложно думать о том, как сделать так, чтобы после выбора категории этот диалог был отклонен (или выглядит так, как будто он уволен), и появляется тот же самый с вновь заполненными элементами (или может быть совершенно новым диалогом) , и когда кто-то нажимает кнопку «Назад», отображается предыдущий диалог. Подумайте об этом как о проводнике файлов, но только с двумя уровнями глубины. Я хотел бы продолжать использовать свой CustomDialogList, потому что я настроил его внешний вид, чтобы соответствовать всем остальным в моем приложении. Возможно, то, что поможет мне с этой проблемой, помимо или вместо кода, будет представлять собой некоторые диаграммы того, как этот тип потока пользовательского интерфейса был реализован до того, как будет использоваться некоторый псевдокод.

Спасибо.

ответ

1

Предполагая, что ваш пользовательский диалог расширяет Dialog (или один из его подклассов). Внесите свой Activity орудие DialogInterface.onDismissListener. Затем после создания диалога с ...

dialog = customBuilder.create(); 

... использовать dialog.setOnDismissListener(this);, прежде чем показать его.

Ваш Activity придется реализовать ...

@Override 
public void onDismiss(DialogInterface dialog) { 
    // Identify which dialog was dismissed and do something 
} 
+0

Спасибо, я постараюсь это! – 8oh8

0

Когда мне приходилось это делать в прошлом, у меня есть диалоговое окно onCancel для открытия диалогового окна.

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