安卓 : cancelling progressbar caught exception : android. view.ViewRoot$CalledFromWrongThreadException

标签 android progress-bar

我正在尝试在我的应用程序中实现一个进度条。 单击按钮时可以看到此进度条,然后线程也随之启动。当线程完成时,我试图使 progressBar 不可见。但它在执行时遇到了异常:

progressbar.setVisibility(View.GONE);

异常:

android.view.ViewRoot$CalledFromWrongThreadException:只有创建 View 层次结构的原始线程才能触及它的 View 。

我的代码是:

  Thread thredUpdate   = new Thread()
  {
     public void run()
     {
        ClearDatabase();
                 progressbar.setVisibility(View.GONE);                                      
     }
  };
  requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
  setProgressBarVisibility(true);
  ProgressBar progressbar  = (ProgressBar)findViewById(R.id.progress);
  progressbar .setVisibility(View.GONE);
  btnUpdateDB.setOnClickListener(new OnClickListener()
  {
      @Override
      public void onClick(View argBtnUpdateDB)
      {                 
            setProgressBarVisibility(true);
            progressbar.setVisibility(View.VISIBLE);
             try
            {
                     if((progressbar.isEnabled()))
                    thredUpdate.start();
             }               
            catch(Exception exSoap) 
            {                                                                                 
                   exSoap.printStackTrace();
            }

  } });

如何在不调用 setVisibility(View.GONE) 的情况下取消此进度条?

谢谢...

最佳答案

您应该从 UI 线程调用它:

runOnUiThread(new Runnable() {
        public void run() {
             progressbar.setVisibility(View.GONE);
        }
    });

另一种方法是使用 AsyncTask 而不是常规的 Thread

关于安卓 : cancelling progressbar caught exception : android. view.ViewRoot$CalledFromWrongThreadException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5499389/

相关文章:

android - 当互联网连接在 Android 应用程序中不可用时显示警报

android - iOS Objective C 覆盖属性 setter

Android ProgressBar 没有动画

jquery - 根据值 : Jquery Mobile 更改进度条的颜色

Android 进度条删除默认填充

android - 如何在没有 Root 设备的情况下使用自己的 Android 服务进行屏幕截图?

安卓工作室 : A mess of Gradle build versions and compilation errors

java - 如何使用 RecyclerView 显示空 View ?

Java Web App FutureTask 进度条

javascript - 如何更新进度条?