2016-11-16 7 views
0

프래그먼트 A와 B가있는 B는 확장 A와 유사합니다. B의 UI 데이터 업데이트는 A에 저장해야하며 A의 UI는 데이터베이스에 저장할지 여부를 결정합니다.한 프래그먼트에서 대체 프래그먼트로 데이터를 전달하는 방법

그래서 A가 먼저 백 스택에 놓여지며, 얼마 후에 B가 필요하고 B가 백 스택에 놓이며 'replace()'가 붙습니다.

B에 데이터를 전달하는 것은 인수로 처리 할 수 ​​없습니다. B 단편에서 A 단편으로 데이터를 다시 전달하는 방법 (A가 홀더에서 B로 '대체()'되고 현재 표시되지 않거나 '기존'인 경우) 데이터를 A 단편으로 다시 전달하는 방법은 무엇입니까? Developers 웹 사이트에서

Bundle args = new Bundle(); 
args.putSerializable(TAG_MY_CLASS, myClass); 
Fragment bFrgmt = new B(); 
bFrgmt.setArguments(args); 
getFragmentManager() 
    .beginTransaction() 
    .replace(R.id.holder, bFrgmt, TAG_B_FRAGMENT) 
    .addToBackStack(TAG_B_FRAGMENT).commit(); 
+0

일반적으로 Fragments 간의 통신은 Activity (패턴 관찰자)를 통해 수행됩니다. 따라서 활성 상태 인 프래그먼트는 해당 액티비티에 (인터페이스를 통해) 어떤 액션이 발생하고 액티비티가 프래그먼트 1에 알릴 수 있다고 알립니다. – alla

+0

감사합니다. alla! 나는 내 질문에 B가 화면에 있고 A가 알 수없는 상태 (동일한 '홀더'에서 B로 대체 됨) 일 때 B에서 A로 전달하는 가장 좋은 방법이 무엇인지 생각합니다. 사고가 B popstack 이벤트를 잡아 내고 나서 OS가 'holder'에있는 A를 다시 가져 와서 그 시간에 A에게 데이터를 전달할 수있게되었을 것입니다. 더 좋은 방법이 있습니까? – lannyf

답변

2

:

는 종종 사용자 이벤트에 따라 내용을 변경하는 예를 들어, 서로 통신하는 하나 개의 조각을 할 것입니다. 모두 단편 -Fragment 통신은 연관된 활동을 통해 수행됩니다. 두 단편은 절대로 직접 의사 소통을해서는 안됩니다.

먼저 활동 조각에서 데이터를 전송, 당신은 의도로 조각에 데이터를 전송할 수 있으며, onCreateView 조각의 방법을 받기 위해 활동에서 다음 활동에이 데이터를받을 수 있습니다.

활동을 통해 조각 사이에서 통신 할 수 있습니다. this 접근 방식을 사용하여 활동 및 조각간에 의사 소통 할 수 있습니다.