开发者社区> 问答> 正文

无法在我创建的AlertDialog上抛出到android.widget.ImageView

我尝试制作AlertDialog,但是遇到了崩溃错误问题,我尝试了多种方法,但是仍然无法正常工作,从通过添加Id将约束布局更改为LinearLayout的方法,但此方法仍然有效

XML文件

<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
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"
android:id="@+id/parent_view"
android:padding="20dp">

<androidx.cardview.widget.CardView
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    app:cardCornerRadius="5dp">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:paddingBottom="16dp">

        <TextView
            android:id="@+id/content"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:text="Cencel payment"
            android:textAllCaps="true"
            android:textColor="@color/color_black_000000"
            app:layout_constraintEnd_toEndOf="@+id/textView10"
            app:layout_constraintHorizontal_bias="0.498"
            app:layout_constraintStart_toStartOf="@+id/textView10"
            app:layout_constraintTop_toTopOf="parent" />

        <TextView
            android:id="@+id/textView10"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:layout_marginTop="16dp"
            android:text="Confirm if you are sure to cancel this payment."
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintTop_toBottomOf="@+id/content" />

        <Button
            android:id="@+id/btnContonuewPayment"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="20sp"
            android:layout_marginTop="23dp"
            android:layout_marginEnd="20sp"
            android:background="@drawable/bg_payment_orange_ff8830"
            android:text="Continue Payment"
            android:textColor="@color/color_white_FFFFFF"
            app:layout_constraintEnd_toEndOf="@+id/textView10"
            app:layout_constraintStart_toStartOf="@+id/textView10"
            app:layout_constraintTop_toBottomOf="@+id/textView10" />

        <Button
            android:id="@+id/btnCancel"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="20sp"
            android:layout_marginTop="10dp"
            android:layout_marginEnd="20sp"
            android:background="@drawable/bg_back_to_home"
            android:text="Yes, Cancel"
            android:textAllCaps="false"
            android:textColor="#FF8830"
            app:layout_constraintEnd_toEndOf="@+id/btnContonuewPayment"
            app:layout_constraintStart_toStartOf="@+id/btnContonuewPayment"
            app:layout_constraintTop_toBottomOf="@+id/btnContonuewPayment" />

    </androidx.constraintlayout.widget.ConstraintLayout>

</androidx.cardview.widget.CardView>

我尝试过这种方法,如何通过添加id并将其更改为Linearlayout 来修复无法将androidx.appcompat.widget.AppCompatButton强制转换为com.rey.material.widget.Button的方法,但仍然会崩溃

科特林

private fun showDialog() {

    val dialogBuilder = AlertDialog.Builder(this)
    val viewDialogForget = layoutInflater.inflate(R.layout.dialog_payment,null)
    val continuew = viewDialogForget.findViewById<ImageView>(R.id.btnContonuewPayment)
    val cancel = viewDialogForget.findViewById<ImageView>(R.id.btnCancel)
    dialogBuilder.setView(viewDialogForget)
    dialogBuilder.setCancelable(false)
    val dialog = dialogBuilder.create()
    dialog.window?.setBackgroundDrawable(ColorDrawable(Color.TRANSPARENT))


    continuew.setOnClickListener {
        dialog.dismiss()
    }

    cancel.setOnClickListener {
        finish()
    }

    dialog.show()
}

问题来源:Stack Overflow

展开
收起
montos 2020-03-26 14:05:43 646 0
1 条回答
写回答
取消 提交回答
  • 要像弹出窗口一样显示...,请遵循以下代码,并根据您的要求在xml中进行必要的设计。

     class Testing: AppCompatActivity() {
    
    
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.testing)
    
    
        imageButton.setOnClickListener {
    
            setupAlertDialog()
        }
    
    }
    
    private fun setupAlertDialog() {
    
    var dialog = AlertDialog.Builder(this)
    
       var inflater = this.layoutInflater
    
        var message:View = inflater.inflate(R.layout.test_dialog,null)
    
        dialog.setView(message)
        dialog.show()
    
    }
    }
    

    使用充气机将您最初提到的XML文件转换为xml文件

    回答来源:Stack Overflow

    2020-03-26 14:06:06
    赞同 展开评论 打赏
问答分类:
问答标签:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
58同城Android客户端Walle框架演进与实践之路 立即下载
Android组件化实现 立即下载
蚂蚁聚宝Android秒级编译——Freeline 立即下载