安口。运行异步布局修改

时间:2017-11-01 19:44:33

标签: android kotlin anko

我正在尝试使用anko为我的活动添加一个按钮。我知道可以使用RxJava(我已经这样做了)。我想知道如何使用Anko和异步来做到这一点。 代码在同步线程上运行时有效。

class MainActivity : AppCompatActivity() {
    fun someMethod(){
        async(UI) {
            bg {
                var button = Button(this@MainActivity)
                button.background = this@MainActivity.getDrawable(R.drawable.ic_action_balloon)
                myFrame.addView(button)
            }
        }
     }

当我构建代码时,我收到此错误:

  

错误:(32,17)Val无法重新分配

     

错误:(32,55)未解析的引用:getDrawable

2 个答案:

答案 0 :(得分:1)

API 21中引入了函数activity.getDrawable。您应该使用activity.resources.getDrawable代替。

答案 1 :(得分:0)

您只能从UI线程修改视图(bg在其他线程上运行)。

我尝试了您的代码,它可以编译但什么也没做。

此外,如果您不想从协程返回任何内容,请使用launch而不是async。

无论如何,删除bg,它应该可以工作。您不是偶然地打算做这样的事情吗?

launch(UI) {
    val someJob = bg {
        //Do some work here
        someResult
    }
    doWhateverWithUI(someJob.await())
}