我试图从子类调用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 中使用。我不明白为什么该程序无法在应用程序上运行。
答案 0 :(得分:2)
您的sub_class实际上是一个嵌套类。您可能希望使其成为内部类。 (Nested and Inner Classes)
内部类可以访问外部类的成员,因为它们带有对外部类对象的引用。因此,您无需在内部类中创建外部类的实例。
在您的情况下,将是这样:
open inner class sub_class{
open fun test(){
toast("test")
}
}