代码之家  ›  专栏  ›  技术社区  ›  shariful islam

Android,Kotlin:如何在Kotlin的情况下将MainActivity的方法调用到子类方法中?

  •  0
  • shariful islam  · 技术社区  · 6 年前

    我正试图从子类调用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() . 当我尝试这样做时,应用程序崩溃了。

    注: 喜欢这个节目 英特利思想 . 我不明白为什么这个程序不能在应用程序上运行。

    1 回复  |  直到 6 年前
        1
  •  2
  •   dzikovskyy    6 年前

    您的子类实际上是一个嵌套类。你可能想让它成为一个内部阶级。( Nested and Inner Classes )
    内部类可以访问外部类的成员,因为它们携带对外部类对象的引用。所以您不需要在内部类中创建外部类的实例。

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

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