С Kotlin я использую настраиваемый класс диалогового окна. Действие необходимо закрыть, чтобы вернуть предыдущее действие с вызовом finish()
действия в onClick()
диалогового окна.
Упрощенный настраиваемый диалог
class TestDialog (context: Context) : Dialog(context),
View.OnClickListener {
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))
requestWindowFeature(Window.FEATURE_NO_TITLE)
setContentView(R.layout.dialog_result_screen)
var yesButton= findViewById(R.id.buttonControl);
yesButton.setOnClickListener(this);
}
override fun onClick(v: View) {
dismiss()
(context as AppCompatActivity).finish()
}
}
Действие вызывает это диалоговое окно как
val testDialog = TestDialog(this@TheDialogDisplayerActivity)
testDialog.show()
//used to dislay in full size of the secreen.
val window: Window? = testDialog.window
window?.setLayout(ActionBar.LayoutParams.MATCH_PARENT, ActionBar.LayoutParams.MATCH_PARENT)
Действие расширяет AppCompatActivity
Когда Вызывается finish()
, возникает следующая ошибка: я не могу найти решение.
java.lang.ClassCastException: android.view.ContextThemeWrapper cannot be cast to androidx.appcompat.app.AppCompatActivity
at com.xyz.widget.TestResultDialog.onClick(TestResultDialog.kt:67)
Я тоже пробовал преобразовать в класс активности. Это тоже не сработало.
Я просмотрел эти Q / As 1 , 2 и некоторые другие вопросы, но не смог решить .
Как решить эту проблему?