(안드로이드/코틀린) Activity 와 Fragment 사이에서 데이터 전달 및 통신방법

Activity to Fragment 데이터 전달 및 통신방법

많은 모바일 서비스들이 화면들이 많아지면서 액티비티 위에 Bottom Nav를 그리고 프래그먼트를 사용하는 경우가 많아졌다. 이렇게 되면서 데이터나 버튼 액션을 가끔씩 전달해줘야 하는 경우가 생긴다.

실습하기

1. Fragment 코드 만들기

class DashboardFragment : Fragment() {

    override fun onCreateView(inflater: LayoutInflater,container: ViewGroup?,savedInstanceState: Bundle?
    ): View? {
        val root = inflater.inflate(R.layout.fragment_dashboard, container, false)
        return root
    }

    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
       super.onViewCreated(view, savedInstanceState)

       listener?.onFragmentListener("HI")
   }


    private var listener: OnFragmentListener? = null

    interface OnFragmentListener {
        fun onFragmentListener(msg: String)
    }

    override fun onAttach(context: Context) {
        super.onAttach(context)

        if (context is OnFragmentListener) {
            listener = context
        } else {
            throw RuntimeException("$context must implement OnFragmentInteractionListener")
        }
    }
}

2. Activity 코드 작성하기

class MainActivity : AppCompatActivity(), DashboardFragment.OnnFragmentListener {

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

    override fun onFragmentListener(msg: String) {
        Toast.makeText(this, "msg from fragment", Toast.LENGTH_SHORT).show()
    }
}

결론



Related Posts