Android ProgressDialog OnClickListener с проблемой кнопки «Назад»

У меня есть некоторые действия с вкладками, когда пользователь может переходить от одного действия к другому, нажимая вкладки кнопок вверху. При нажатии на любую из вкладок появляется диалоговое окно ProgressDialog с представлением «Загрузка...». Я хочу управлять этим, потому что во время процесса загрузки, если пользователь нажимает кнопку «Назад», он возвращается к предыдущему действию.

Я попытался реализовать это с помощью ProgressDialog onClickListener, но у меня есть 2 проблемы.

Первая проблема возникает во время диалогового окна загрузки: если пользователь щелкает в любом месте экрана, срабатывает диалоговое окно onClickListener of progress. Я не хочу, чтобы это произошло; он должен запускаться только с задней кнопки.

Вторая проблема заключается в том, что когда появляется "Загрузка...", мой onClickListener работает в течение 1 или 1,5 секунд, в то время как он виден около 2-3 секунд. Если я нажму кнопку «Назад» через 1 или 1,5 сек. прослушиватель диалога прогресса ничего не делает и остается в том же действии?


person Ishant    schedule 18.07.2012    source источник
comment
только что получил решение первой проблемы. Просто использовал progressdialog.setCanceledOnTouchOutside(false);   -  person Ishant    schedule 19.07.2012
comment
Приятно видеть это. Но я думаю, что ваша главная проблема заключается в том, что вы не хотите, чтобы диалоговое окно прогресса возвращалось к предыдущему экрану при нажатии кнопки «Назад». Более того, я думаю, вам не нужно много. просто выполните pd.setCancellable(false); .. и удалите все остальное из вашего кода. Даже ваш прослушиватель кликов. и попробуйте это.   -  person Ahmed    schedule 19.07.2012
comment
@BratRosm нет, ты ошибаешься, мой друг .. как раз наоборот, я хочу вернуться к предыдущему экрану только с помощью кнопки «Назад» и ничего больше ..   -  person Ishant    schedule 20.07.2012


Ответы (2)


переопределите метод onBackPressed() и сначала закройте диалоговое окно, а затем позвольте super.onBackPressed() работать, таким образом он закроет ваш диалог, и вы сможете вернуться к обычному экрану.

Во-вторых, просто установите dialog.setCancellable(false);, так пользователь не сможет этого сделать, даже если кликнет в любом месте экрана.

Например,

@Override
public void onBackPressed() {
 dialog.dismiss();
 super.onBackPressed();
}

void create ProgressDialog() {
 dialog =  new ProgressDialog/Alerdialog.Builder(this);
 dialog.setTitle(tile);
 dialog.setMessage(message);
 dialog.setCancellable(false);
 dialog.show();
}

Все хорошо идти!

person Ahmed    schedule 18.07.2012
comment
:: ни OnBackPressed, ни OnKeyDown не работают, если виден progressDialog... для меня бесполезный трюк - person Ishant; 19.07.2012

Вот как я решил свою проблему:

  public ProgressDialog pDialog;
    @Override
    public void onBackPressed() {
        // TODO Auto-generated method stub
        if (pDialog != null)
            if (pDialog.isShowing())
                return;

        super.onBackPressed();
    }
person Alex    schedule 09.12.2012