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

时间:2021-08-01 20:01:58

标签: android-studio kotlin

当用户单击对话框片段中的“保存”按钮时,我试图在 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()
    }
}
}

0 个答案:

没有答案