Android 对话框中的按钮在片段的onStart()中始终返回null

Android 对话框中的按钮在片段的onStart()中始终返回null,android,android-fragments,kotlin,android-dialog,Android,Android Fragments,Kotlin,Android Dialog,我有一个片段中的对话框,需要对话框中的一些文本,然后单击OK按钮,在单击按钮后得到一个空对象引用错误 class BFragment : Fragment() { override fun onStart() { super.onStart() fun showDialog(){ //get Dialog : Numbers val dialogView = LayoutInflater.from(context)

我有一个片段中的对话框,需要对话框中的一些文本,然后单击OK按钮,在单击按钮后得到一个空对象引用错误

class BFragment : Fragment() {
    override fun onStart() {
    super.onStart()

    fun showDialog(){
        //get Dialog : Numbers
        val dialogView = LayoutInflater.from(context)
            .inflate(R.layout.dialog_b, null)
        //AlertDialog builder
        val dialogBuilder = AlertDialog.Builder(context)
            .setView(dialogView)
        //Show Dialog
        val alertDialog = dialogBuilder.show()

        //setOnClickListener(android.view.View$OnClickListener)' on a null object reference
        dialogView.btn_ok.setOnClickListener {

            Log.d("Clicked", et_one.text.toString())

            alertDialog.dismiss()
        }
     }

    run_btn.setOnClickListener {

        showDialog()
    }
  }
}
.xml


您需要在此处初始化Edittext以从Edittext获取值。在下面一行添加您的代码

var et_one: EditText
var btn_ok: Button
    et_one= layoutInflateView.findViewById(R.id.et_one)
    btn_ok= layoutInflateView.findViewById(R.id.btn_ok)
因此您的代码如下所示:

 fun showDialog(){
    //get Dialog : Numbers
    val dialogView = LayoutInflater.from(context)
        .inflate(R.layout.dialog_b, null)
    //AlertDialog builder
    val dialogBuilder = AlertDialog.Builder(context)
        .setView(dialogView)
    //Show Dialog
    val alertDialog = dialogBuilder.show()
    var et_one: EditText
    var btn_ok: Button

    et_one= layoutInflateView.findViewById(R.id.et_one)
    btn_ok= layoutInflateView.findViewById(R.id.btn_ok)
    //setOnClickListener(android.view.View$OnClickListener)' on a null object reference
    dialogView.btn_ok.setOnClickListener {

        Log.d("Clicked", et_one.text.toString())

        alertDialog.dismiss()
    }
 }

您可以发布完整的异常错误消息吗?您确定et_one或et_one.text不为空吗?您可以将日志行重写为:Log.d(“单击${et_one?.text}”)。现在,如果et_one或et_one.text为空,则不会崩溃。@treesareverywhere Log.d(“Clicked${et_one?.text}”)->d/单击:null@treesAreEverywhere在XML文件中,edittext有默认值,为什么会为null
var et_one: EditText
var btn_ok: Button
    et_one= layoutInflateView.findViewById(R.id.et_one)
    btn_ok= layoutInflateView.findViewById(R.id.btn_ok)
 fun showDialog(){
    //get Dialog : Numbers
    val dialogView = LayoutInflater.from(context)
        .inflate(R.layout.dialog_b, null)
    //AlertDialog builder
    val dialogBuilder = AlertDialog.Builder(context)
        .setView(dialogView)
    //Show Dialog
    val alertDialog = dialogBuilder.show()
    var et_one: EditText
    var btn_ok: Button

    et_one= layoutInflateView.findViewById(R.id.et_one)
    btn_ok= layoutInflateView.findViewById(R.id.btn_ok)
    //setOnClickListener(android.view.View$OnClickListener)' on a null object reference
    dialogView.btn_ok.setOnClickListener {

        Log.d("Clicked", et_one.text.toString())

        alertDialog.dismiss()
    }
 }