当用户单击对话框片段中的“保存”按钮时,我试图在 MainActivity 中运行一个方法。这是我的代码,我收到错误消息: “lateinit 属性 mainTextView 尚未初始化”
运行此方法的最佳实践是什么?
import android.os.Bundle
import android.widget.Button
import android.widget.TextView
import androidx.appcompat.app.AppCompatActivity
class MainActivity : AppCompatActivity() {
lateinit var mainTextView: TextView
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_main)
mainTextView = findViewById<TextView>(R.id.mainText)
val btn = findViewById<Button>(R.id.addNew)
btn.setOnClickListener {
UserInfoDialog().show(supportFragmentManager, "UserInfoDialog")
}
}
fun save(name: String) {
mainTextView.setText(name)
}
}
UserInfo 对话框类:
class UserInfoDialog() : DialogFragment() {
override fun onCreateView(
inflater: LayoutInflater,
container: ViewGroup?,
savedInstanceState: Bundle?
): View? {
dialog!!.window?.setBackgroundDrawableResource(R.drawable.round_corner)
return inflater.inflate(R.layout.custom_dialog, container, false)
}
override fun onStart() {
super.onStart()
val width = (resources.displayMetrics.widthPixels * 0.85).toInt()
dialog!!.window?.setLayout(width, ViewGroup.LayoutParams.WRAP_CONTENT)
val saveBtn = dialog?.findViewById<Button>(R.id.saveBtn)
saveBtn?.setOnClickListener {
MainActivity().save("test")
dialog!!.dismiss()
}
}
}