Android 对话框中的按钮在片段的onStart()中始终返回null
我有一个片段中的对话框,需要对话框中的一些文本,然后单击OK按钮,在单击按钮后得到一个空对象引用错误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)
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()
}
}