[使用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)
我也尝试过转换为活动类。这也不起作用。
我该如何解决这个问题?
[使用Kotlin,我正在使用自定义对话框类。需要关闭该活动以通过在对话框的onClick()上调用活动的finish()来返回上一个活动。简化的...
[如果您查看父类Dialog
,则context
变为:mContext = new ContextThemeWrapper(context, themeResId);
-正是当您尝试将其稍后投射回Activity
时出现的错误。