Deperecated/Android_강의

안드로이드 - DialogFragment

누알라리 2020. 2. 19. 17:17
1. DialogFragment란?

- AlertDialog를 관리하는 Fragment를 만들어 사용할 수 있도록 제공되는 Fragment이다.

- AlertDialog와 큰 차이는 없으며, 현업에서는 AlertDialog 보다 DialogFragment를 사용하는 것이 편할 때가 종종 있다.

 

2. 예제

1. DialogFragment를 상속하는 Fragment를 생성.

2. AlertDiaglouge생성

3. MainActivity에 Fragment show()

4. 리스너 생성 후 세팅

 

class FirstFragment : DialogFragment() {

    override fun onCreateDialog(savedInstanceState: Bundle?): Dialog {

        // 4. 리스너 세팅
        var listner = DialogListner()

        // 1. AlertDiaglouge 생성
        var builder = AlertDialog.Builder(activity)
        builder.setTitle("타이틀입니다")
        builder.setMessage("메세지 입니다")

        builder.setPositiveButton("positive", listner)
        builder.setNeutralButton("neutral", listner)
        builder.setNegativeButton("negative", listner)

        var alert = builder.create()

        return alert
    }


    // 4. 리스너 세팅
    inner class DialogListner : DialogInterface.OnClickListener{
        override fun onClick(dialog: DialogInterface?, which: Int) {
            var main_activity = activity as MainActivity

            when(which)
            {
                DialogInterface.BUTTON_POSITIVE ->
                {
                    main_activity.textView4.text = "긍정"
                }
                DialogInterface.BUTTON_NEUTRAL ->
                {
                    main_activity.textView4.text = "중립"
                }
                DialogInterface.BUTTON_NEGATIVE ->
                {
                    main_activity.textView4.text = "부정"
                }
            }
        }
    }
}
class MainActivity : AppCompatActivity() {

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

        // 3. 메인에서 바로 AlertDiaglog를 띄운다.
        button.setOnClickListener { view ->
            var dialog = FirstFragment()
            dialog.show(supportFragmentManager, "tag")
        }
    }
}