2017-05-04 20 views
0

중간에 두 팀의 홈 화면 중에서 선택할 수있는 팀의 앱 기능을 추가하고 있습니다. 이 두 화면은 매우 다른 느낌을줍니다.사용자의 취향에 따라 두 개의 서로 다른 조각간에 홈 조각을 전환하는 방법

현재 나의 현재 설정은 HomeFragment라는 추상 클래스를 확장하는 두 개의 개별 프래그먼트 Home1Fragment 및 Home2Fragment를 갖는 것입니다. 사용자는 설정 페이지에서 환경 설정을 변경할 때까지 기본적으로 Home1Fragment를 사용합니다.

나는이 두 조각을 모두 구현했으며 홈 화면으로 고독한 행동을하면 제대로 작동합니다.

한 조각에서 다른 조각으로 전환하려고하면 문제가 발생합니다. 나는 내 앞에 실제 코드없이 즉석에서 쓴 있기 때문에 위의 코드에 오타가있을 수 있습니다

@Override 
public void onBackPressed() { 
    FragmentManager fragmentManager = getFragmentManager(); 

    if(fragmentManager.getBackStackEntryCount() > 1) { 
     fragmentManager.popBackStackImmediate(); 

     int option = getSharedPreferences('**hidden**', MODE_PRIVATE).get('home_screen_option', 0); 
     Fragment fragment = fragmentManager.findFragmentById(R.id.content); 
     if(fragment != null && fragment instanceof HomeFragment) { 
      if(f instanceof Home1Fragment && option == HOME_2) { 
      f = new Home2Fragment(); 
      } else if (f instanceof Home2Fragment && option == HOME_1) { 
      f = new Home1Fragment(); 
      } 
     } 
    } else { 
     finish(); 
    } 
} 

를 통해이에 시도했습니다.

+0

코드의 문제점은 무엇입니까? 단편이 표시되지 않습니까? –

답변

0

코드에 실제로 새 조각을 설정하지 마십시오.

하지만 저장된 상태 (예 : 공유 환경 설정의 설정)를 기반으로 다른 방법을 선택하고 홈 화면 자체에서 처리합니다 (내가 반대하는 백 스택 조작 대신).

옵션 1.

홈 화면은 별도의 Activity 될 수 있다면 생각하세요. 그렇게하면 에 저장된 값에 따라 Activity이 시작될 때 올바른 조각을로드 할 수 있습니다.

거의 같은 일

옵션 2 단지 중첩 된 조각을 사용. 홈 화면을 Fragment으로 만들고 레이아웃에 하위 조각을위한 컨테이너를 추가하십시오. 그런 다음 자식 조각 관리자를 사용하여 그에 따라 올바른보기를로드하십시오.