0

가능한 한 제목을 입력하려고했으나 기본적으로 HomeActivity 내부에 조각 용 무리가있는 사용자 지정 메뉴가 있습니다. 그들 중 하나는 HomeFragment이고 Tablelayout은 2 탭이고 viewpager ..입니다!툴바에서 뒤로 밀면 ViewPager가 작동하지 않습니다.

모든 것이 올바르게 작동합니다. 그러나 메뉴 조각 내에서 사용자가 도구 모음에서 뒤로 버튼을 클릭하면 HomeFragment으로 돌아갑니다. 프래그먼트 대체 방법은 이미 메뉴에서 선택할 때 프래그먼트간에 바꾸기 위해 사용했던 트릭을 수행합니다!

그러나이 경우 HomeFragment이 열리고 아직 Tablayout은 반응이 없습니다. 조각이 제대로 만들어지지 않은 것 같은 느낌!?

기본적으로 HomeFragment을 여는 동일한 활동의 ​​새로운 의도를 사용했지만 동일한 문제가 발생합니다. ..!


문제점

enter image description here


규범

HomeFragment

// code.. 

    @Override 
    public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, 
     Bundle savedInstanceState) { 
    View rootView = inflater.inflate(R.layout.fragment_home, container, false); 
    InitViews(rootView); 

    TabLayoutAdapter adapter = new TabLayoutAdapter(getFragmentManager()); 
    pager.setAdapter(adapter); 
    tabLayout.setupWithViewPager(pager); 


    return rootView; 
    } 

// code.. 

메뉴 대신 getFragmentManager의 조각

// code.. 

    @Override 
    public boolean onOptionsItemSelected(MenuItem item) { 
    switch (item.getItemId()) { 
     case R.id.to_home: 

    replaceFragment(new HomeFragment()); 

     // tried this and it's the same problem 
     // startActivity(new Intent(getActivity(), HomeActivity.class).setFlags(Intent.FLAG_ACTIVITY_NO_HISTORY)); 
     return true; 
     default: 
     return super.onOptionsItemSelected(item); 
    } 
    } 

    public void replaceFragment(Fragment fragment) { 
    android.support.v4.app.FragmentTransaction t = getFragmentManager().beginTransaction(); 
    t.replace(R.id.Container, fragment); 
    t.commit(); 
    } 

    // code.. 

답변

2

난 당신이 getChildFragmentManager을 (사용한다고 생각 코드를 보면)() 및 조각 트랜잭션을 위해 사용합니다.

getChildFragmentManager()의 정의는 다음과 같습니다. 이 Fragment 내에 Fragment를 배치하고 관리하기위한 전용 FragmentManager를 리턴합니다.

그리고 getFragmentManager()의 정의는 다음과 같습니다. 이 프래그먼트의 활동과 연관된 프래그먼트와 상호 작용하기 위해 FragmentManager를 리턴하십시오.

그것은 나를 준다 getChildFragmentManager에 의해 getFragmentManager()을 가진 코드 행() 메뉴 조각

android.support.v4.app.FragmentTransaction t = getChildFragmentManager().beginTransaction(); 
+0

에서 또한

TabLayoutAdapter adapter = new TabLayoutAdapter(getChildFragmentManager()); 

를 교체'java.lang.IllegalArgumentException가 : ID에 대해보기 조각을위한 0x7f0d008a (XXX.XXXX : id/Container) 게임 조각 {2b77c84 # 2 id = 0x7f0d008a} ' –

+0

해당 GamesFragment는 어디에 있습니까? – Anonymous

+0

메뉴 조각입니다 ..! 그것의 코드는 질문에 게시됩니다! 왜이 오류가 나타 났을까요?!? –