Android

[Android/kotlin] DialogFragment를 이용한 커스텀 대화상자 만들기

dev_zoe 2021. 3. 5. 03:52
반응형

Dialog vs Dialogfragment

developer.android.com/guide/topics/ui/dialogs?hl=ko

-> 대화상자를 관리하는 데 DialogFragment를 사용하면 사용자가 뒤로 버튼을 누르거나 화면을 돌리는 등과 같은 수명 주기 이벤트를 올바르게 처리할 수 있습니다. DialogFragment 클래스를 사용하면 대화상자의 UI를 더 큰 UI에 삽입할 수 있는 구성요소로 재사용할 수도 있습니다.

 

dialogfragment는 dialog에 비해 생명주기를 활용한 프로그래밍이 가능하다는 점에서 용이하다.

 

DialogFragment를 이용하여 커스텀 대화상자만들기

1. dialog를 커스텀할 layout 구성 - res/layout/dialogtodoadd.xml

2. dialogfragment를 상속한 TodoAddDialogFragment 클래스

package com.example.nm1.src.main.home.nest.todo

import android.os.Bundle
import android.text.Editable
import android.text.TextWatcher
import android.view.LayoutInflater
import android.view.View
import android.view.ViewGroup
import android.widget.AdapterView
import android.widget.ArrayAdapter
import androidx.fragment.app.DialogFragment
import com.example.nm1.R
import com.example.nm1.databinding.DialogTodoAddBinding
class TodoAddDialogFragment : DialogFragment() {

 //dialogtodoadd의 binding을 사용하여
    private lateinit var binding: DialogTodoAddBinding

    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        //false로 설정해 주면 화면밖 혹은 뒤로가기 버튼시 다이얼로그라 dismiss 되지 않는다.
        isCancelable = false
    }

    override fun onCreateView(
        inflater: LayoutInflater,
        container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
    // 여기서 inflate
        binding = DialogTodoAddBinding.inflate(inflater, container, false)
        
        //커스텀 대화상자에서 할 이벤트들을 여기에 정의
        
        return binding.root
   }
}

 

 

references

developer.android.com/guide/topics/ui/dialogs?hl=ko

 

반응형