본문 바로가기
안드로이드/Fragment

안드로이드 DialogFragment

by 김어찐 2022. 6. 17.
728x90

AlertDialog를 Fragment로 만들어 사용할 수 있도록 제공되는 Fragment이다
AlertDialog와 큰 차이는 없다.
DialogFragment도 Fragment 이므로 Fragment의 생명주기나 기타 다양한 기능들을 그대로 사용할 수 있다.

 

package com.example.dialogfragment

import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import kotlinx.android.synthetic.main.activity_main.*

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

        button.setOnClickListener {
            val subFragment = SubFragment()
            subFragment.show(supportFragmentManager,"tag")
        }
    }
}

 

 

SubFragment(다이얼로그)

package com.example.dialogfragment

import android.app.Dialog
import android.os.Bundle
import androidx.appcompat.app.AlertDialog
import androidx.fragment.app.DialogFragment
import kotlinx.android.synthetic.main.activity_main.*

class SubFragment : DialogFragment() {

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {
        val mainActivity = activity as MainActivity

        val builder = AlertDialog.Builder(mainActivity)
        builder.setTitle("타이틀 입니다")
        builder.setMessage("메시지 입니다")

        builder.setPositiveButton("Positive"){dialogInterface,i ->
            mainActivity.textView.text = "Positive"
        }

        builder.setNeutralButton("Neutral"){dialogInterface,i ->
            mainActivity.textView.text = "Neutral"
        }

        builder.setNegativeButton("Negative"){dialogInterface,i ->
            mainActivity.textView.text = "Negative"
        }

        val alert = builder.create()
        return alert
    }
}
728x90