반응형

DialogFragment

설명

  • AlertDialog를 Fragment로 만들어 사용할 수 있도록 제공되는 Fragment

코드

TestDialogFragment
class TestDialogFragment : DialogFragment() {
    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val listener = DialogListener()
        val builder = AlertDialog.Builder(activity)
        builder.setTitle("타이틀")
        builder.setMessage("메시지")
        builder.setPositiveButton("positive", listener)
        builder.setNeutralButton("neutral", listener)
        builder.setNegativeButton("negative", listener)
        return builder.create()
    }

    inner class DialogListener : DialogInterface.OnClickListener {
        override fun onClick(dialog: DialogInterface?, which: Int) {
            val mainActivity = activity as MainActivity

            when (which) {
                DialogInterface.BUTTON_POSITIVE -> mainActivity.textView?.text = "positive"
                DialogInterface.BUTTON_NEUTRAL -> mainActivity.textView?.text = "neutral"
                DialogInterface.BUTTON_NEGATIVE -> mainActivity.textView?.text = "negative"
            }
        }
    }
}
res/layout/activity_main.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical">

    <TextView
        android:id="@+id/textView"
        android:layout_width="match_parent"
        android:layout_height="wrap_content" />

    <Button
        android:id="@+id/button"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:text="click" />

</LinearLayout>
MainActivity
class MainActivity : AppCompatActivity() {
    var textView: TextView? = null
    var button: Button? = null

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)

        textView = findViewById(R.id.textView)
        button = findViewById(R.id.button)

        button?.setOnClickListener {
            val dialog = TestDialogFragment()
            dialog.show(supportFragmentManager, "TestDialog")
        }
    }
}

참고

반응형

'Development > Android' 카테고리의 다른 글

[Android] BroadcastReceiver  (0) 2021.02.09
[Android] Thread & Handler  (0) 2021.02.09
[Android] ListFragment  (0) 2021.02.09
[Android] Fragment  (0) 2021.02.09
[Android] DatePicker  (0) 2021.02.09

+ Recent posts