java - 进度对话框阻止内容 View 切换?

标签 java android

每当我在关闭进度对话框后尝试设置内容 View 时,都会收到类似以下错误:

04-13 14:40:38.043: WARN/System.err(801): android.view.ViewRoot$CalledFromWrongThreadException: 只有创建 View 层次结构的原始线程才能触摸其 View 。 04-13 14:40:38.073:警告/InputManagerService(59):窗口已聚焦,忽略焦点增益:com.android.internal.view.IInputMethodClient$Stub$Proxy@44dde3f0

我的代码就像...

ProgressDialog dialog = null; //class variable.


dialog = ProgressDialog.show(Login.this, "", 
            "Logging you in. Please wait...", true);
     new Thread() {
         public void run() {
                 try{
                      //serious work here!
                    }
                    dialog.dismiss();
                    setContentView(R.layout.blaa);
                 } catch (Exception e) {
                     e.printStackTrace();
                 }
         }
 }.start();

这是什么原因造成的?

最佳答案

您的线程不是 UI 线程。我认为您需要创建一个 Handler,然后在需要切换内容 View 时向其发送 Runnable。

Handler hdl = new Handler(); // Will ron on UI-thread

dialog = ProgressDialog.show(Login.this, "", 
        "Logging you in. Please wait...", true);
new Thread() {
     public void run() {
             try{
                  //serious work here!
                }
                hdl.post(new Runnable() {
                    public void run() {
                        dialog.dismiss();
                        setContentView(R.layout.blaa);
                    }
                });
             } catch (Exception e) {
                 e.printStackTrace();
             }
     }
}.start();

关于java - 进度对话框阻止内容 View 切换?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5650370/

相关文章:

android - 如何在 Grid-RecyclerView 中的所有列上拉伸(stretch)原生广告?

android - 尝试将 fragment 添加到我的 fragment 容器 FrameLayout

java - 运行时异常 : Buffer not large enough for pixels

Java 改变 JPanel 的形状

java - 如何改进此搜索算法运行时?

java - 从临时目录读取 SQLite 文件时获取 java.io.EOFException

java - C++ 中的删除和 Java 中的垃圾收集

java - red5 - 从代码开始新范围

android - 我怎么知道是否存在 inflatedView

java - 如何获得 Google Play 游戏服务排行榜的排名?