java - Android线程问题(线程在后台运行)

标签 java android multithreading dialog

大家好
我今天遇到的问题是关于 Threads ,在 Android Activity 中,我想显示一个带有消息、图标和标题以及三个按钮(正面、负面和中性)的对话框,我已经做到了没有错误(加上监听器和所有这些),我正确地执行并且再次没有错误,问题在于:

    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();
        }
    }); 

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

SOS 伙计们!谢谢!

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

最佳答案

问题是您不在 UI 线程中执行 UI 操作。

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

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

关于java - Android线程问题(线程在后台运行),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14638404/

相关文章:

JavaFX - 加载自定义控件的样式表

java - 从 GUI 类调用字符串 - VariableDeclarators 错误

java - 如何将一个类的方法用于另一个类的私有(private)成员对象

java - Android:通过 URL.getContent() 从互联网获取数据 - 不需要 HttpUrlConnection?

java - 在 Java 中进行多线程时,常规队列不适合使用吗?

java - 关闭特定 java 线程的 outputLOG 中的日志记录语句

java - 更简单的方法来格式化 Java 代码行以使您的工作更轻松?

android - ListView 下方的按钮

java - VC++ 与 Java 的结果不一致

c++ - 将类的成员函数传递给 std::thread