Kotlin内部类正在访问外部类?

时间:2018-06-20 13:58:36

标签: android kotlin

如何从内部类中调用外部类中的方法? 我可以将其作为上下文传递,但不能在其上调用方法

    loginButton.setOnClickListener {
        ssoManager.login(emailEditText.text.toString(), passwordEditText.text.toString())
                .subscribe(object: Consumer<SSOToken> {
                    val intent = Intent(this@LoginActiviy, PasscodeActivity::class.java)
                    this@LoginActiviy.startActivity(intent)
                })

1 个答案:

答案 0 :(得分:3)

我不确定您在此处使用的是什么API,为了得出答案,我将假设您的Consumerjava.util.function.Consumer

您正在直接在object的主体中而不是在函数内部编写代码。创建Intent的第一行仅适用于您声明的是属性(而不是局部变量!)。

您应该做的是实现Consumer的适当方法,并在其中编写要执行的代码:

loginButton.setOnClickListener {
    ssoManager.login()
            .subscribe(
                    object : Consumer<SSOToken> {
                        val foo = "bar" // this is a property of the object

                        override fun accept(t: SSOToken) {
                            val intent = Intent(this@LoginActiviy, PasscodeActivity::class.java)
                            this@LoginActiviy.startActivity(intent)
                        }
                    }
            )
}