Каков наилучший способ реализовать два пользовательских диалога, один за другим? - PullRequest
2 голосов
/ 30 декабря 2011

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

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, потому что я настроил его внешний вид так, чтобы он соответствовал всему остальному в моем приложении.Возможно, что помогло бы мне с этой проблемой помимо или вместо кода, были бы некоторые диаграммы того, как этот тип потока пользовательского интерфейса был реализован прежде вместе с некоторым псевдокодом.

Спасибо.

Ответы [ 2 ]

1 голос
/ 30 декабря 2011

При условии, что ваш пользовательский диалог расширяется 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 голосов
/ 30 декабря 2011

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...