2017-02-24 7 views
0

I 두 단편 프래그먼트 및 조각 B. 프래그먼트 4 개 탭이있는에서 중첩 단편 업데이트 아래와 같이안드로이드 : 다른 단편

enter image description here

탭 (3)는 사용자로부터, 리사이클 뷰를 갖는다 옵션을 선택합니다. 이제 사용자는 단편 B로 이동하여 무언가를합니다. 작업이 완료되면 호출이 다시 조각 A로 돌아가고 Tab 4가 강조 표시되고 네 번째 탭의 데이터가로드됩니다.

지금까지는 조각 A로 돌아갈 수 있었지만 거기에서 탭 4로 전환하고 데이터를로드 할 수 없습니다. 확인한 결과, 콜백이 단편 A로 반환되었을 때 여전히 보이지 않는 것으로 나타났습니다. 따라서 탭이 전환되지 않았습니다. 이것을 어떻게 할 수 있습니까?

답변

0

FragmentA는 일시 중지되었으므로 직접 업데이트 할 수 없습니다.

//RC_FRAGMENT_B is just an int constant to identify the result later 
fragmentB.setTargetFragment(FragmentA.this, RC_FRAGMENT_B); 

및 구현 :

을 당신이 할 수있는 장소에서 당신이 FragmentB 추가 시작하는 DialogFragment을 FragmentB하고 그 결과 (에 startActivityForResult 같은 많은) FragmentA에서

를 얻을 수 targetFragment를 사용하다 당신이 완료 FragmentB에서 다음

public static final int RC_FRAGMENT_B = 1666; 
public static final int RC_SUCCESS = 1888; 

@Override 
public void onActivityResult(int requestCode, int resultCode, Intent data) { 
    if (requestCode == RC_FRAGMENT_B && resultCode == RC_SUCCESS) { 
     //change tab, etc. 
    } 
} 
, 사용 :

Fragment target = getTargetFragment(); 
if (target != null) { 
    //FragmentA.RC_SUCCESS result code needs to be a constant indicate to FragmentA what to do 
    target.onActivityResult(getTargetRequestCode(), FragmentA.RC_SUCCESS, getActivity().getIntent()); 
} 
+0

I 조각 B를 대화 상자로 변환 할 수 없습니다. B 단원에서는 사용자가 돈을 청구하는 웹보기입니다. 프래그먼트가 표시되는 시점을 알 수있는 방법이 있습니까? – Nitish

+0

예, onResume 메소드이지만 FragmentA.onResume은 FragmentB.onPause (너무 늦음) 이후까지 발생하지 않습니다. 조각 대화 상자 안에 원하는 것을 넣을 수 있습니다. AlertDialog와 같지 않습니다. –