Не работает динамичное добавление изображение в потоке на Android
Есть приложение на Android, что взаимодействует с сервером. В процессе взаимодействия нужно динамически добавить на экран изображения, используя как ресурсы приложения, так и загруженное с сервера изображение. Но от только при запуске активности и после загрузки экран остается пустым. Подскажите, пожалуйста, в чем может быть дело?
fight_activity.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/area"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context="Fight">
</androidx.constraintlayout.widget.ConstraintLayout>
Fight.kt
class Fight : Activity() {
var adress ="192.168.1.109"
var port = 8080
lateinit var game_screen: ConstraintLayout
@ExperimentalStdlibApi
@RequiresApi(Build.VERSION_CODES.LOLLIPOP)
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_fight)
game_screen=findViewById<ConstraintLayout>(R.id.area)
thread { ClientHandler(adress, port, this).run() }
}
}
class ClientHandler(adress: String, port: Int, a: Fight) : Runnable {
val socket = Socket(adress, port)
val dout = DataOutputStream(socket.getOutputStream())
val inputStream = socket.getInputStream()
val activity = a
override fun run() {
val answer=get_answer()//получение ответа с сервера
activity.runOnUiThread(Runnable(){
var new_view= ImageView(activity)
new_view.setScaleType(ImageView.ScaleType.FIT_XY)
new_view.setImageDrawable(activity.getDrawable(R.drawable.control_fone))
new_view.layoutParams = (ViewGroup.LayoutParams(width, height ))
new_view.layout(0, 0, width, height)
activity.game_screen.addView(new_view)
new_view= ImageView(activity)
new_view.setImageBitmap(
BitmapFactory.decodeFile(
Environment.getExternalStoragePublicDirectory(
Environment.DIRECTORY_PICTURES).path
+ "/"+answer))
new_view.layoutParams = (ViewGroup.LayoutParams(height, width))
new_view.layout(x, y, x+width, y+height)
new_view.setScaleType(ImageView.ScaleType.FIT_XY)
activity.game_screen.addView(new_view)
}
}