【问题标题】:Change Layout Background in Thread更改线程中的布局背景
【发布时间】:2016-09-10 19:13:24
【问题描述】:

我想更改我在另一个类中使用的线程的背景颜色。但不幸的是“只有创建视图层次结构的原始线程才能触及它的视图”我得到一个错误。

如果你能帮忙,我会很高兴。

private class thread implements Runnable{

    @Override
    public void run() {

                while (!change_background) {

                    background.setBackgroundColor(Color.parseColor("#ffffff"));

                    try {
                        Thread.sleep(100);
                    } catch (InterruptedException e) {
                        e.printStackTrace();
                    }

                    background.setBackgroundColor(Color.parseColor("#000000"));

                }
}

【问题讨论】:

    标签: android multithreading runnable


    【解决方案1】:

    是的,这是正确的,只有主 ui 可以触摸它的视图。但是有一个很好的解决方法。即使您在另一个线程上,您也可以使用 runOnUiThread 调用主线程。

    runOnUiThread(new Runnable() {
        @Override
        public void run() {
            //write UI related code in here
            background.setBackgroundColor(Color.parseColor("#000000"));
        }
    });
    

    【讨论】:

      【解决方案2】:

      在uithread中调用上面的vode或使用处理程序。

      runOnUiThread

      【讨论】:

        【解决方案3】:

        使用 runOnUiThread 改变背景。

        ((Activity)context).runOnUiThread(new Runnable() {
            public void run() {
                // things need to work on ui thread
            }
        });
        

        【讨论】:

          猜你喜欢
          • 2018-09-15
          • 1970-01-01
          • 2023-03-12
          • 1970-01-01
          • 2013-10-02
          • 1970-01-01
          • 2013-04-06
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多