我有自定义提醒。 我为它做了一个自定义布局和一个扩展Dialog的类,我有几个定义alert的行为的函数。 我通过单击按钮来调用活动中的自定义警报。
一切正常,直到我想将 handler.postDelayed 添加到对话框。
以下是我的Dialog类的一些代码:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
requestWindowFeature(Window.FEATURE_NO_TITLE);
setContentView(R.layout.bonus_dialog);
handler.postDelayed(tickOne, 900);
handler.postDelayed(tickTwo, 1800);
}
这是tickOne runnable:
Runnable tickOne = new Runnable() {
@Override
public void run() {
countdown.setText("00:04");
}
};
tickTwo方法是相同的,只设置另一个文本。
当应用程序崩溃时,它显示我调用Dialog的活动中的错误,并将错误追溯到此行:
dialog.show();
我发现如果我评论handler.postDelayed方法,我的对话框将会显示并按预期消失。
所以,我的问题是 - 为什么自定义对话框中不支持postDelayed方法,我该如何解决这个问题?
答案 0 :(得分:1)
您需要在UI线程上显示对话框。做类似的事情:
final SomeActivity activity = this.
Runnable tick1 = new Runnable() {
public void run(){
countdown.setText("00:04");
activity.runOnUIThread(new Runnable() {
public void run(){
countdown.show(); // assuming the countdown is the dialog you want to show
}
});
}
}