Создание диалога, который будет отклонен автоматически - PullRequest
2 голосов
/ 30 ноября 2010

возможно ли создать Dialog, который будет автоматически отклонен через некоторое время, если он не взаимодействует с пользователем?

Ответы [ 6 ]

5 голосов
/ 30 ноября 2010

Вы можете использовать Обработчик, чтобы автоматически закрыть его.

В учениках класса:

private final int CANCEL_DIALOG = 1;
private Handler mHandler;
private Dialog mDialog;

В onCreate ():

mHandler = new Handler(new Handler.Callback()
{
    @Override
    public boolean handleMessage(Message msg)
    {
        if(msg.what == CANCEL_DIALOG)
        {
            mDialog.cancel();
        }

        return false;
    }
});

На кнопкевы используете для открытия диалогового окна (или любой другой системы, которую вы используете):

mDialog.show();
mHandler.sendEmptyMessageDelayed(CANCEL_DIALOG, 5000);

По существу, через 5 секунд, диалоговое окно закроется после открытия с использованием этого кода.

2 голосов
/ 02 декабря 2010

Наконец-то я понял, используя Handler.

mHandler = new Handler(new Handler.Callback()
{
    @Override
    public boolean handleMessage(Message msg)
    {
        if(msg.what == CANCEL_DIALOG)
        {
            mDialog.cancel();
        }

        return false;
    }
});

mDialog.show();
mHandler.sendEmptyMessageDelayed(CANCEL_DIALOG, 5000);

Внутри Dialog У меня есть ListViewscrollListener этого ListView я положил:

mHandler.removeMessages(CANCEL_DIALOG);
mHandler.sendEmptyMessageDelayed(CANCEL_DIALOG, 5000);
0 голосов
/ 08 апреля 2016

Вы можете использовать CountDownTimer

Так просто.

 new CountDownTimer(5000, 1000) {

            public void onTick(long millisUntilFinished) {
            }

            public void onFinish() {
                 //Your AlertDialog.cancel
                dialog.cancel();
            }
        }.start();
0 голосов
/ 12 октября 2012
final Timer t = new Timer();

            t.schedule(new TimerTask() {

                public void run() {

                    dlg.dismiss(); // when the task active then close the 
                                    // dialog(here we are dismissing the dialog)

                    t.cancel(); // also just top the timer thread,
                                // otherwise, you may receive a crash report

                }

            }, 2000);

Здесь мы создаем объект Timer и планируем таймер на 2 с, а то и на 2 с, затем он автоматически вызывает run (), в run () мы напишем логику для закрытия журнала

0 голосов
/ 12 января 2012
dialog.show();
final Timer t = new Timer();
t.schedule(new TimerTask() 
{
    public void run() 
    {
    dialog.dismiss(); // when the task active then close the dialog
    t.cancel(); // also just top the timer thread,otherwise, you may receive a crash report
    }
}, 2000);
0 голосов
/ 30 ноября 2010

Вы можете использовать действие в качестве диалогового окна, а затем завершить его через некоторое время (как хотите).

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