Kotlin / Android应用 - 外部活动更改视图元素



我正在使用Kotlin Lang创建我的Android应用。

我想创建一个对象(单例),该对象会动态地将Modyfyfyfymodyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfyfymodyfyfyfyfymoderfy。

出现了一些问题。首先,该对象(当然)不是活动类型,因此我不能使用例如FindViewById和其他活动的功能等。我尝试通过通过对象的构造函数传递主要活动来解决此问题,但不允许使用它 - 因为对象无法使用对象他们的构造函数。

此外,我不确定,如果至少可以根据良好的做法接受此应用程序设计。如果不是真的 - 我应该使用哪种设计模式将如何更改我的布局从仅修改视图元素的代码进行分开?

预先感谢您的任何建议。

您可以使用观察者,可观察到。rxjava/rxandroid/rxkotlin

,或者您可以使用Otto或Greenbus进行活动发送/捕捉Singleton类。

rxkotlin示例。

usermanager.kt

    @Singleton
    class UserManager(private val rxBus : RxBus){
    fun sendX(){
    rxBus.send(EventX())
    } 

主要活动

mainActivity.kt

class MainActivity : AppCompat ....
onCreate(...){

rxBus.toObservable()
                                   .applySchedulers()
                                   .subscribe({ event ->
                                                  if (event is EventX)
                                                  {
                                                      //do something here.
                                                  }
                                              })
                          )
}

rxbus.kt

@Singleton
class RxBus
{
    private val _bus = PublishSubject.create<Any>()
    fun send(o: Any)
    {
        _bus.onNext(o)
    }
    fun toObservable(): Observable<Any>
    {
        return _bus
    }
    fun hasObservers(): Boolean
    {
        return _bus.hasObservers()
    }
}

Otto是一个很好的广场图书馆,但杰克·沃顿(Jake Warthon)说,不要在kotlin与rxjava一起使用它。我不记得为什么。

最新更新