#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
.