rokkonet

PC・Androidソフトウェア・アプリの開発・使い方に関するメモ

android開発 Fragment内でnon-nullなActivity Contextを取得する関数はrequireContext()

2022 Apr. 29.
2022 Apr. 28.

出典
日付選択ダイアログを追加する記述の、contextのType mismatch。
Android で一般的な Kotlin パターンを使用する  |  Android デベロッパー  |  Android Developers

Fragment#requireContext : non-nullなActivity Contextを返す
Fragment#getContext : nullableなActivity Contextを返す

サンプルkotlinコード

class CustomDialogFragment : DialogFragment() {
    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val myDialog = Dialog(requireContext())
        myDialog.getWindow()?.requestFeature(Window.FEATURE_NO_TITLE)
        myDialog.setContentView(R.layout.my_dialog)
        val editTextMessage = myDialog.findViewById<EditText>(R.id.editTextMessage)
        myDialog.findViewById<Button>(R.id.buttonOk).setOnClickListener {
                val text = editTextMessage.text.toString()
                val callingActivity = activity as MainActivity
                callingActivity.onReturnValue(text)
                dismiss()
        }
        return myDialog
    }
}