1

嘿伙计们
我今天遇到的问题是关于Threads的,在一个 Android 活动中,我想显示一个带有消息、图标和标题以及三个按钮(正面、负面和中性)的对话框,我已经做到了,没有错误(加上听众和所有这些),我一次又一次地正确执行,没有错误,问题出在:

    alert.setPositiveButton("Yes", new android.content.DialogInterface.OnClickListener(){
        public void onClick(DialogInterface i, int j)
        {

            pb.setVisibility(0); //pb is a progress bar
            new Thread (new Runnable ()
            {
                public void run ()
                {
                    try {
                        tv.setText("Saved!");
                        Thread.sleep(5000);
                        tv.setText(null);  //tv is a text view
                        Thread.sleep(5000);
                        finish();

                    } catch (InterruptedException e) {
                        alerttmp.setIcon(R.drawable.ic_launcher);
                        alerttmp.setTitle("Error");
                        alerttmp.setMessage("Thread could not be executed Thread id: 100390");
                        alerttmp.show();
                    }

                }
            }).run();
        }
    }); 

看,正按钮被突出显示并保持突出显示,直到活动关闭,而我希望对话框消失,显示 pb,电视显示文本“已保存!!” 在其中,然后没有文本,毕竟这会杀死活动。

求救各位!谢谢!

ps:英语不是我的母语,所以请不要用莎士比亚的话!:) 请让语言尽可能简单!谢谢!

4

2 回答 2

1

问题是你没有在 UI 线程中做你的 UI 工作。

您需要将可运行对象发布到 UI 处理程序,而不仅仅是为此生成一个新线程。

你可以用它new Handler().postDelayed(Runnable runnable, long millis)来实现。当然,这必须从 UI 线程运行 - 而不是从您生成的任何其他线程运行。

于 2013-02-01T02:09:21.167 回答
0

使用两个处理程序设法做到这一点,这里是代码:注意:我仍然需要更多地了解处理程序和 postDelayed 方法,所以评论会有所帮助,并且一定会受到赞赏,否则我会用谷歌搜索它(去做无论如何)

    alert.setPositiveButton("Yes", new android.content.DialogInterface.OnClickListener(){
        public void onClick(DialogInterface i, int j)
        {
            pb.setVisibility(0);
            tv.setText("Saved!");
    new Handler().postDelayed(new Runnable() {
                public void run() {
                    tv.setText(null);
        }}, 5000);
    new Handler().postDelayed(new Runnable() {
        public void run() {
            finish();
}}, 5000);
        }});
于 2013-02-01T03:35:53.973 回答