Я хочу установить таймаут для диалога (диалог прогресса) в android, чтобы диалоговое окно исчезло через какое-то время (если нет ответа на какое-либо действие!)
Установить таймаут Диалог в Android?
Ответ 1
Тот же подход, что и в этот пост, проверен на работу (с длинным вместо float):
public void timerDelayRemoveDialog(long time, final Dialog d){
new Handler().postDelayed(new Runnable() {
public void run() {
d.dismiss();
}
}, time);
}
Ответ 2
Вы всегда можете создать класс под названием ProgressDialogWithTimeout и переопределить функциональность метода show, чтобы вернуть ProgressDialog и установить таймер, чтобы делать то, что вы хотите, когда этот таймер отключается. Пример:
private static Timer mTimer = new Timer();
private static ProgressDialog dialog;
public ProgressDialogWithTimeout(Context context) {
super(context);
// TODO Auto-generated constructor stub
}
public ProgressDialogWithTimeout(Context context, int theme) {
super(context, theme);
// TODO Auto-generated constructor stub
}
public static ProgressDialog show (Context context, CharSequence title, CharSequence message)
{
MyTask task = new MyTask();
// Run task after 10 seconds
mTimer.schedule(task, 0, 10000);
dialog = ProgressDialog.show(context, title, message);
return dialog;
}
static class MyTask extends TimerTask {
public void run() {
// Do what you wish here with the dialog
if (dialog != null)
{
dialog.cancel();
}
}
}
Тогда вы бы назвали это в своем коде следующим образом:
ProgressDialog progressDialog = ProgressDialogWithTimeout.show(this, "", "Loading...");