自定义警报中的handler.postDelayed崩溃我的应用程序

时间:2013-11-27 10:14:01

标签: android crash handler alert postdelayed

我有自定义提醒。 我为它做了一个自定义布局和一个扩展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方法,我该如何解决这个问题?

1 个答案:

答案 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
      }
    });
  }
}