0
  • 여러 탭이있는 Android 애플리케이션을 수행 중이며, 에는 탭이 2 개 있습니다. 하나의 탭은 "android.support.v4.app.Fragment"이며 에는 몇 개의 텍스트 필드와 버튼이 있고 다른 하나는 "android.app.Fragment"이며 동시에 MapFragment입니다.
  • 문제는 첫 번째 탭이 다른 "android.support.v4.app.Fragment"를 cardview (지원) 및 이라고 부르며 일부 탭과 ​​함께 이들을 탐색 할 수 있다는 것입니다.
  • 지도에서 처음 클릭하면 나중에 다른 탭을 클릭하고 버튼을 클릭하여 cardviews가 포함 된 프레임으로 이동합니다.이 배경을 볼 수는 있지만 배경에서도 볼 수 있습니다. MapFragment.
  • 이 문제를 해결하는 방법을 모르겠습니다. 나는 대체를 사용하려고 시도했다. add, popBackStack, ... 추가적으로 나는 rootview에서 프레임을 삭제하려고 시도했지만, 아무 일도 일어나지 않았다.
  • 사실 나는 노트북을 창밖으로 던질 예정입니다.

미리 감사드립니다.Android 조각이 배경으로 유지됩니다.

답변

0

글쎄 무슨 일이 일어 났는지 알았어. 이는 두 개의 다른 프래그먼트 관리자 (FragmentManagerSupportFragmentManager)와 작업 할 예정입니다.
제거하거나 바꾸려는 조각 유형 (지원 또는 일반)에 따라 하나 또는 다른 조각 관리자를 사용해야합니다.
어떤 종류의 조각이 활성화되어 있는지 (제거하기 위해) 어떤 종류의 조각이 시작될 것인지 (교체하기 위해) 열거 형을 만들었습니다. 말했듯 I 3 프래그먼트가

private void manageFragment (FragmentEnum nextFragment) { 

     switch (activedFragment) { 
      case SUPPORT: 
       getSupportFragmentManager().beginTransaction().remove(fragmentSupport).commit(); 
       break; 
      case NORMAL: 
       getFragmentManager().beginTransaction().remove(fragmentNormal).commit(); 
       break; 
     } 

     activedFragment = nextFragment; 

     switch (nextFragment) { 
      case SUPPORT: 
       getSupportFragmentManager().beginTransaction().replace(R.id.fragment_container, fragmentSupport).commit(); 
       break; 
      case NORMAL: 
       getFragmentManager().beginTransaction().replace(R.id.fragment_container, fragmentNormal).commit(); 
       break; 
     } 
    } 
0

.addToBackStack("")을 사용하는 경우이를 제거하십시오. 매번 사용자 조각을 호출 할 때마다 .replace(); 메소드를 호출해야합니다.

+0

:
다소는이 같은 기능을했다. 두 개의 탭 ('.addToBackStack (""), 1-support, 2- normal)을 가지고 있지 않으며 탭 1에서 호출 된 하나의 조각 (이것이 왜 .addToBackStack ("")') . – Erqox

관련 문제