не удается использовать ApplicationContext в kotlin / java в классе runnable

#android #kotlin

#Android #kotlin

Вопрос:

Это мое первое приложение для Android, и у меня проблема с ApplicationContext в классе runnable. Я хочу создать сервер на kotlin (или java), но когда я пытаюсь это сделать, я не могу использовать ApplicationContext (когда я использую его в «переопределении fun onCreate», все в порядке. Это мой класс:

     class ServerReader2 : Runnable {

    var ss: ServerSocket? = null
    var mySocket: Socket? = null
    var dis: DataInputStream? = null
    var bufferedReader: BufferedReader? = null
    var message: String? = null
    var handler = Handler()
    override fun run() {
        try {
            ss = ServerSocket(7800)
            handler.post {
                //Toast.makeText(getApplicationContext(),"Waiting for client", Toast.LENGTH_SHORT).show();
            }
            while (true) {
                mySocket = ss!!.accept()
                dis = DataInputStream(mySocket!!.getInputStream())
                message = dis!!.readUTF()
                //handler.post { Toast.makeText(applicationContext, "message recived from client: $message", Toast.LENGTH_SHORT).show() }
                handler.post { Toast.makeText(applicationContext, "message recived from client: $message", Toast.LENGTH_SHORT).show() }
            }
        } catch (e: IOException) {
            e.printStackTrace()
        }
    }
}
 

Этот класс находится в разделе «переопределение функции onCreate (savedInstanceState: Bundle?)», Но в моем основном классе «класс RemoteControl: AppCompatActivity()»

Я знаю, я должен зависеть от класса «ServerReader2» от AppCompatActivity, но я не знаю как (это мое первое приложение для Android в kotlin). До этого я пытался сделать то же самое, но на java в отдельном файле, и у меня была та же проблема.

Ответ №1:

Чтобы получить доступ к закрытым членам родительского класса, используйте inner ключевое слово для вашего класса.

В этом случае вы должны написать inner class ServerReader2 : Runnable .