0

FragmentStatePagerAdapter에서 프래그먼트를 대체하는 데 성공했지만 프래그먼트를 바꿔서 다른 프래그먼트를 다시 생성하여 조각을 대체해야합니다.먼저 다른 페이지로 스 와이프하지 않고 FragmentStatePagerAdapter에서 현재 표시된 부분을 바꿀 수 있습니까?

내가 바라는 것은 현재 표시된 조각을 변경하지 않고 어댑터의 현재 표시된 조각을 다른 조각으로 바꾸는 것입니다.

예 :

페이지 1 페이지 2 페이지 3 Page4

Page4 활성 단편이다. 내가 Page4에 무언가를 클릭하면, 그것은

페이지 1 페이지 2 페이지 3 페이지 3

fragmentDataSource[3] = page3Fragment; 
adapter.notifyDataSetChanged(); 

만 때문에 onChange() 방법을 작동 다른 조각에 의해 대체 될 것이다. (야생 추측)

이것이 가능합니까? FrameLayout 사용을 고려하고 레이아웃의 가시성을 설정했지만 최상의 선택이라고 생각하지 않습니다.

감사합니다.

답변

0

이되어 있지 ViewPager의 조각을 다시 인스턴스화하는 방법을 가장 효율적인 방법하지만 간단합니다 :

public int getItemPosition(Object object) { 
    return POSITION_NONE; 
} 

또는이 조각의 방법을하고 조각이 올바른가있는 경우, 호출 태그 :

@Override 
     public Fragment getItem(int position) {   
      if (position == some position) { 
       YourFragment myFragment = YourFragment.newInstance(someObject); 
       myFragment.setmTag("some tag"); 
       return myFragment; 
      } 
      //some code 

}

@Override 
     public int getItemPosition(Object object) { 
      YourFragment frag = ((YourFragment) object); 
      if (frag.getmTag()!="some tag") { 
       ((YourFragment) object).update(someObject); 

      } 

      return super.getItemPosition(object); 
     }