[自定义对话框关闭后的finish()时,Android活动崩溃了

问题描述 投票:0回答:1

[使用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)

我也尝试过转换为活动类。这也不起作用。

我也看过这些[Q0],12和其他一些问题,但未能解决。

我该如何解决这个问题?

[使用Kotlin,我正在使用自定义对话框类。需要关闭该活动以通过在对话框的onClick()上调用活动的finish()来返回上一个活动。简化的...

android kotlin android-activity customdialog
1个回答
0
投票

[如果您查看父类Dialog,则context变为:mContext = new ContextThemeWrapper(context, themeResId);-正是当您尝试将其稍后投射回Activity时出现的错误。

© www.soinside.com 2019 - 2024. All rights reserved.