Apple is Apple

일일회고

 

프로젝트하느라 TIL 작성하는 것도 까먹었다.

 

중간중간에 계속 작성해야겠다.


오늘의 키워드

  • 가이드 작성

가이드 작성

팀원의 코드 작성을 돕기 위해 데이터 전달 시 짜야한 코드 프레임을 제시해 주었다.

  • add contact dialog에서 취소 시 메인으로 돌아가기
 private lateinit var callback: OnBackPressedCallback
    
    override fun onAttach(context: Context) {
        super.onAttach(context)
        callback = object : OnBackPressedCallback(true) {
            override fun handleOnBackPressed() {
                (requireActivity() as MainActivity).initViews()
            }
        }
        requireActivity().onBackPressedDispatcher.addCallback(this, callback)
    }
    
    override fun onDetach() {
        super.onDetach()
        callback.remove()
    }
  • 프래그먼트 간 데이터 전달
    1. 메인 리사이클러뷰에서 swipe시 데이터 전달 (Call Fragment로)
    2. onResume 생명주기 메서드에서 setFragmentResultListener로 받을 수 있습니다.
    @RequiresApi(Build.VERSION_CODES.TIRAMISU)
    override fun onResume() {
    	    super.onResume()
    	    var obj: CallingObject? = null
    	parentFragmentManager.setFragmentResultListener(
    	        "callObject",
    	viewLifecycleOwner
    	){_, bundle->
    	obj = bundle.getParcelable("model", CallingObject::class.java)
    	}
    	println(obj) // -> 데이터 받는 것 확인 
     edittext.setText(obj.phoneNumber)
    }
    

    1. contact detail fragment에서는 생명주기 함수에서 아래와 같이 데이터를 받을 수 있습니다.
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val data =arguments?.getParcelable<Parcelable>("model")
    println(data)
    }
    
    or
    
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val data =arguments?.getParcelable<Parcelable>("model")
    println(data)
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_contact_detail, container, false)
    }
    
  • 프래그먼트 간 데이터 전달
    1. 메인 리사이클러뷰에서 swipe시 데이터 전달 (Call Fragment로)
    2. onResume 생명주기 메서드에서 setFragmentResultListener로 받을 수 있습니다.
    @RequiresApi(Build.VERSION_CODES.TIRAMISU)
    override fun onResume() {
    	    super.onResume()
    	    var obj: CallingObject? = null
    	parentFragmentManager.setFragmentResultListener(
    	        "callObject",
    	viewLifecycleOwner
    	){_, bundle->
    	obj = bundle.getParcelable("model", CallingObject::class.java)
    	}
    	println(obj) // -> 데이터 받는 것 확인 
     edittext.setText(obj.phoneNumber)
    }
    

    1. contact detail fragment에서는 생명주기 함수에서 아래와 같이 데이터를 받을 수 있습니다.
    override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
        super.onViewCreated(view, savedInstanceState)
        val data =arguments?.getParcelable<Parcelable>("model")
    println(data)
    }
    
    or
    
    override fun onCreateView(
        inflater: LayoutInflater, container: ViewGroup?,
        savedInstanceState: Bundle?
    ): View? {
        val data =arguments?.getParcelable<Parcelable>("model")
    println(data)
        // Inflate the layout for this fragment
        return inflater.inflate(R.layout.fragment_contact_detail, container, false)
    }
    
  • 1번 2번 전송방식이 다른 이유는 1번은 viewpager → viewpager 2번은 viewpager → other fragment여서 전송방식을 다르게 했습니다. (1번에서 bundle을 arguments에 담아 전달해보았는데 안되었음)
profile

Apple is Apple

@mjjjjjj