2016-12-13 2 views
0

나는 다음이 FragmentFragment과를 생성하는 Activity 다른 Fragment 생성 한 :

활동 -> Fragment1 -> Fragment2

내가 Fragment2 지금 나는 내가 ' 버튼을 클릭하여 Fragment1으로 돌아가고 싶습니다. 에서

내 내 buttonOnClickListener 내가 가진 :이 Activity 날을 제공

getActivity().getSupportFragmentManager().beginTransaction().remove(fragment2.this).commit(); 

. 실제로 Fragment2을 제거하고 Fragment1으로 이동하는 방법이 있습니까?

시간 내 미리 감사드립니다. 온라인에서 적합한 정보를 찾을 수 없습니다.

+0

당신은에서 getSupportFragmentManager()를 사용할 수 있습니다. popBackStack()를 대신'에서 getSupportFragmentManager를 사용하여 조각 –

+0

을 제거하는(). popBackStack을()'I에 의해,'내가) (교체'사용 활동 – LDG

+0

에 다시 가고, 같은 결과를 얻을 수 'add()'를 사용하면 팝업 할 수 있습니까? – LDG

답변

3

@AhmedAbidi는 문제에 대한 좋은 통찰력을 갖고 있습니다. 예, popBackStack을 구현하면 문제가 올바르게 해결 될 수 있습니다. 그러나 어쨌든이 유형의 상황을 처리하기위한 다른 접근 방식을 제안하고자합니다.

Activity에 두 개의 공용 함수를 작성하여 조각 사이를 전환하십시오. 당신의 Fragment1 당신이 Fragment2를 통해 실행할 수있는 버튼 클릭에서 지금

public void switchToFragment1() { 
    getSupportFragmentManager().beginTransaction() 
     .replace(R.id.fragment_container, new Fragment1()).commit(); 
} 

public void switchToFragment2() { 
    getSupportFragmentManager().beginTransaction() 
     .replace(R.id.fragment_container, new Fragment2()).commit(); 
} 

,

((YourActivity) getActivity()).switchToFragment2(); 

그리고 귀하의 질문에 대한 더 많은 코드를 필요로 같은 일 Fragment1

((YourActivity) getActivity()).switchToFragment1(); 
0

로 전환하면서 명쾌함.

Fragment1은 getSupportFragmentManager() 또는 getChildFragmentManager()를 통해 Fragment2를 추가합니까? 아마 당신이 이전을하고있는 것으로 보입니다. 그렇다면 Fragment API를 잘못 사용하고있는 것입니다. 조각은 Android's Fragment Documentation 당, 서로에 대해 알고 안됩니다

은 종종 하나 개의 조각은 사용자 이벤트에 따라 내용을 변경하는 예를 들어, 서로 통신하기를 원할 것입니다. 모든 Fragment-to-Fragment 통신은 연관된 Activity를 통해 수행됩니다. 두 단편은 절대로 직접 의사 소통을해서는 안됩니다. 다음 제대로 getSupportFragmentManager().addToBackStack()의 뒷면 스택 기능을 활용 ... getSupportFragmentManager().popBackStack()로 -

당신은 따라서 다음 여기서/때 Fragment2를 추가하도록 결정할 수 있습니다 활동에 Fragment1에서 통신 할 수있는 적절한 청취자를 구현해야합니다. 자세한 설명은 Android Documentation on Back Navigation for Fragments을 참조하십시오.