从对话框片段运行 MainActivity 中的方法

当用户单击对话框片段中的“保存”按钮时,我试图在 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()
    }
}
}
lxy1195 回答:从对话框片段运行 MainActivity 中的方法

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/690.html

大家都在问