Android, Kotlin: как вызвать метод MainActivity в метод подкласса в случае kotlin? - PullRequest
0 голосов
/ 20 января 2019

Я пытаюсь вызвать метод 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 голосов
/ 20 января 2019

Ваш подкласс на самом деле является вложенным классом. И вы, вероятно, хотите сделать его внутренним классом. ( Вложенные и внутренние классы )
Внутренние классы могут получать доступ к членам внешнего класса, поскольку они несут ссылку на объект внешнего класса. Поэтому вам не нужно создавать экземпляр внешнего класса внутри внутреннего класса.

В вашем случае это будет так:

open inner class sub_class{
        open fun test(){
            toast("test")
        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...