2017-10-31 2 views
-2

다음 오류가 발생합니다. java.lang.IllegalStateException : 단편이 이미 추가되었습니다. MapFragment. 레이아웃을 확장 할 때 : java.lang.IllegalStateException : 이미 추가 된 단편

이 사진에서 볼 수 있듯이, 내가 탭을 변경할 때마다 팽창하기 레이아웃입니다!

[FirstTab] http://prntscr.com/h4e8pc

가 [SecondTab] http://prntscr.com/h4ebyn

그래서 난의 아이디어를 얻을! 문제는 아니지만 해결 방법은 여러 가지가 있습니다. .add 대신 .replace을 사용하려고했으나 오류가 발생했지만지도가로드되지 않습니다. 또한 해당 탭으로 전환하자마자 단편을 삭제하려고했지만 결과는 .replace과 비슷합니다.

  case R.id.navigation_dashboard: 

       frame = (FrameLayout) findViewById(R.id.content); 
       frame.removeAllViewsInLayout(); 
       LayoutInflater.from(getApplicationContext()) 
           .inflate(R.layout.activity_prueba_dashboard, frame, true); 

       fragmentTransaction = 
         getFragmentManager().beginTransaction(); 
       fragmentTransaction.add(R.id.content2, mMapFragment); 
       fragmentTransaction.commit(); 
       mMapFragment.getMapAsync(my_maps_class); 

답변

0

나는 그 상황에서 뷰 페이지를 사용하는 것이 훨씬 깔끔하다고 믿습니다. 이 코드를 확인하십시오

public class HomeViewPagerAdapter extends FragmentPagerAdapter { 

    public static final int FRAGMENT_A_INDEX = 0; 
    public static final int FRAGMENT_B_INDEX = 1; 
    public static final int FRAGMENT_C_INDEX = 2; 

    public static final int FRAGMENTS_COUNT = 3; 

    public HomeViewPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public Fragment getItem(int position) { 
     switch (position) { 
      case FRAGMENT_A_INDEX: 
       return FragmentA.newInstance(); 
      case FRAGMENT_B_INDEX: 
       return FragmentB.newInstance(); 
      case FRAGMENT_C_INDEX: 
       return FragmentC.newInstance(); 
      default: 
       return null; 
     } 
    } 

    @Override 
    public int getCount() { 
     return FRAGMENTS_COUNT; 
    } 
} 

을 다음과 같은 여기 호스팅 APPCOMPAT 활동에 ViewPager에 어댑터를 연결 :

HomeViewPagerAdapter homeTabsAdapter = new HomeViewPagerAdapter(getSupportFragmentManager()); 
homeTabsViewPager.setAdapter(homeTabsAdapter); 

당신은 쉽게 호출하여 조각 사이를 전환 할 수 있습니다 :

homeTabsViewPager.setCurrentItem(HomeViewPagerAdapter.FRAGMENT_A_INDEX, false); 
+0

을 안녕하세요 이슬람, 고마워요. 나는 다른 것을 물어봐야 만하는데, 각 조각의 내용을 어디에 추가해야합니까? :) 고맙습니다! –

+0

각각의 파편은 자신의 .java & .xml 파일을 가지며이 파편을 제어하는 ​​뷰 페이지를 보유하는 주요 활동을 갖습니다. –

0

동일한 조각의 내용을 바꾸는 것으로 보았습니다.이 경우에는 FragmentTransaction이 필요하지 않습니다.

해결 방법은지도가있는 두 번째 조각을 만드는 것입니다.이 경우 트랜잭션이 필요합니다.

관련 문제