Android Dev / / 2020. 1. 5. 17:16

Fragment <-> Fragment로 데이터 주고 받기 / 번들 bundle / 인텐트 intent

 

 

 

나.이.만.나도 이제 만날래!

셀소 방식의 신개념 파티앱이에요 당신의 인연. 더 이상 미룰 수 없어요!!!! 셀프 소개팅, 미팅룸을 열고 참여하여 내 인연을 스스로 만들어가요. 내가 선택한 장소에서 직접 파티 룸을 열어 셀

vlm-naiman.tistory.com

 

 

해당 방법은 implementation "androidx.fragment:fragment:1.3.0" 이후 Deprecated 되었습니다.

 

 

Map 형태로 인텐트 받기

 

https://stackoverflow.com/questions/59504212/how-to-send-mutablemap-from-activity-to-another-with-intent

 

How to send MutableMap from activity to another with intent

I have mutable Map as private var optionsList: MutableMap<string, list<string="">> = mutableMapOf() and i need to send it to another activity , i used this : val optionsIntent = ...</string,>

stackoverflow.com

방법1

HashMap<String, String> hashMap= adapter.getItem(position);
Intent intent = new Intent(SourceActivity.this, DestinationActivity.class);
intent.putExtra("hashMap", hashMap);
startActivity(intent);

 

Receiver Activity:
Intent intent = getIntent(); 
HashMap<String, String> hashMap = (HashMap<String, String>) intent.getSerializableExtra("hashMap");

///////////////////////////////////////////////////////////////////////////////////////////////////////////

방법2 

Bundle bundle = new Bundle(); for (Map.Entry<String, String> entry : getData().entrySet()) { bundle.putString(entry.getKey(), entry.getValue()); }

 

코틀린 : 

val bundle = Bundle() for (entry in data.entries) bundle.putString(entry.key, entry.value)

///////////////////////////////////////////////////////////////////////////////////////////////////////////

 

 

 

1.  받는 쪽

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)
val setLocation_Latitude = arguments?.getDouble("latitude")?:0.0
val setLocation_Longitude = arguments?.getDouble("longitude")?:0.0

 

 

2. 주는 쪽

val fragmentbundle = Bundle()
fragmentbundle.putDouble("latitude", it.latitude)
fragmentbundle.putDouble("longitude", it.longitude)

val dialog_confirming: DialogFragment = withme_m2_dialog_setposition()
dialog_confirming.arguments = fragmentbundle
dialog_confirming.show(activity?.supportFragmentManager!!, "m2_dialog_setposition")

 

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

보강된 방법 response 방법(프래그먼트  to 프래그먼트)

 

1. 보내는쪽. (setTargetFragment 호출)

Result 받는 함수 오버라이딩

 

2. 받고 응답하는쪽

 

아래와 같은 함수 호출

첫번째 targetRequestCode는 리퀘스트 코드, FromFragmentMaptoSetpoint는 Resultcode

 

 

//////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////

 

Fragment1 -> Fragment2 -> Fragment 3

 

2단 깊이 전달후 데이터 처리방법

 

2에서

위와 같이 선언하고

 

부모프레그먼트로 위를 선언한다

 

그뒤 2<->3 통신해서 받아오는 리졀트로 부모 뷰를 컨트롤하면된다

 

  • 네이버 블로그 공유
  • 네이버 밴드 공유
  • 페이스북 공유
  • 카카오스토리 공유