rokkonet

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

android開発 ダイアログのOKボタンを押しても条件によってはダイアログを開いておく(AlertDialog , DialogFragment)

2021 Oct. 10.

出典 Android Dialog/AlertDialog getButton NullPointerException | Lua Software Code

概要

  • AlertDialogのgetButton()により、OKボタン、Cancelボタンのインスタンスを取得する

  • DialogFragmentのonStart()にokButton.setOnClickListener { }、cancelButton.setOnClickListener { }を組み込む


コード

class MyDialogFragment: DialogFragment() {
    // thank for https://code.luasoftware.com/tutorials/android/android-alertdialog-getbutton-null-pointer-exception/
    private val okButton: Button by lazy {
        (dialog as AlertDialog).getButton(AlertDialog.BUTTON_POSITIVE)
    }
    private val cancelButton: Button by lazy {
        (dialog as AlertDialog).getButton(AlertDialog.BUTTON_NEGATIVE)
    }

    override fun onStart() {
        super.onStart()
        okButton.setOnClickListener {
            if (!viewEtStr1.text.toString().isNullOrBlank() && !viewEtStr2.text.toString().isNullOrBlank()) {
                myDialog.dismiss()
            }
        }

        cancelButton.setOnClickListener {
            // do something
            myDialog.dismiss()
        }
    }
}