我处于这样一种情况,我需要在几秒钟后弹出一个警告对话框。我用postDelayed()尝试过Handler,它没有用。
new Handler().postDelayed(new
Runnable() {
@Override
public void run() {
AlertDialog.Builder builder = new AlertDialog.Builder(
MyActivity.this);
builder.setTitle("My title... ");
builder. setMessage("my msg..");
builder. setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
Log. e("info", "OK");
}
});
builder.show();
}
});
}
}, 33000);
答案 0 :(得分:2)
你必须在builder.show()下面添加这段代码;这个对我有用。
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
dialog.dismiss();
}
}, 1500); // 1500 seconds
编辑:
我以不同的方式使用它,我可以在你的情况下看到。在这里,您可以看到我的完整代码。在我的情况下,我只想要apears一个“模拟”进度对话框,并在一段时间后它消失。
protected void ActiveProgressDialog() {
final ProgressDialog dialog = ProgressDialog.show(getActivity(), "", getResources().getString(R.string.carregantInfo), true);
dialog.show();
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
public void run() {
dialog.dismiss();
}
}, 1500); // 1500 milliseconds
}
}
答案 1 :(得分:1)
我知道这是一个老问题,我认为问题可能是你没有从主(UI)线程运行。
确保您的处理程序与主线程
相关联new Handler(Looper.getMainLooper()).postDelayed(...);
希望这有帮助!
答案 2 :(得分:0)
private Thread mMainThread;
mMainThread = new Thread(){
@Override
public void run(){
try{
synchronized (this) {
wait(33);
try{
AlertDialog.Builder builder = new AlertDialog.Builder(
MyActivity.this);
builder.setTitle("My title... ");
builder. setMessage("my msg..");
builder. setPositiveButton("OK",
new DialogInterface.OnClickListener() {
public void onClick(DialogInterface dialog,
int which) {
Log. e("info", "OK");
}
});
builder.show();
}catch(Exception e){
}
}
}catch (Exception e) {
}
}};
希望有所帮助