Android,Kotlin:如果有Kotlin,如何将MainActivity的方法调用到子类方法中?

时间:2019-01-20 05:13:57

标签: android kotlin

我试图从子类调用MainActivity的方法。看下面的代码。

class MainActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }

    open fun action(v: View){
        sub_class().test()
    }

    open fun toast(s: String){
        Toast.makeText(this, s, Toast.LENGTH_SHORT).show()
    }

    open class sub_class{
        open fun test(){
            val a = MainActivity()
            a.toast("test")
        }
    }
}

在这里,我想将toast()方法调用到sub_class()中。当我尝试这样做时,应用程序崩溃了。

注意::就像该程序一样,它可以在 Intellij Idea 中使用。我不明白为什么该程序无法在应用程序上运行。

1 个答案:

答案 0 :(得分:2)

您的sub_class实际上是一个嵌套类。您可能希望使其成为内部类。 (Nested and Inner Classes
内部类可以访问外部类的成员,因为它们带有对外部类对象的引用。因此,您无需在内部类中创建外部类的实例。

在您的情况下,将是这样:

open inner class sub_class{
        open fun test(){
            toast("test")
        }
    }