1

그래, 문제는 this post과 거의 동일하지만 거기에 대한 해결책은 내 문제를 해결하지 못했습니다.ViewPager PageAdapter가 업데이트되지 않음보기

나는 아래와 같이 Fragment을 가지고 List을 가지고 FragmentPagerAdapter을 사용합니다.

public class ViewPageAdapter extends FragmentPagerAdapter { 
    private List<Fragment> fragments; 

    public ViewPagerAdapter(FragmentManager fm, List<Fragment> fragments) { 
     super(fm); 
     this.fragments = fragments; 
    } 

    @Override 
    public Fragment getItem(int position) { 
     return fragments.get(position); 
    } 

    @Override 
    public int getCount() { 
     return fragments.size(); 
    } 

    ... 
} 

Fragment은 이와 같은 onCreateView 메서드를 재정의합니다.

@Override 
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedState) { 
    return inflater.inflate(theLayoutResourceId, container, false); 
} 

(POSITION_NONE을 반환 int getItemPosition(Object object)를 오버라이드 (override)) this post의 방법을 사용하여, 나는 notifyDataSetChanged()를 호출 한 후 java.util.ConcurrentModificationException를 얻을 수 있습니다합니다.

메서드 호출 흐름은 다음과 같습니다.

  1. ViewPager 페이지 인덱스 1에서, 대화 상자가 닫힌 후
  2. (onAuthSucceed) (페이스 북 안드로이드 예에서 LoginButton처럼 같은)을 ButtonViewPager 페이지 인덱스를 제거 클릭을 통해 Dialog를 열고 1과 1
  3. notifyDataSetChanged

내가 해봤 많은 다른 방법을 사용하여 강제 업데이트는 Fragment 전에 제거 페이지 지수에게로 또 다른 페이지를 추가 Fragment을 어댑터에 추가하지만 페이지가 새 내용으로 업데이트되지 않습니다.

난 그냥 빈 페이지를 만들기 위해 하나의 방법을 발견

...

viewpager.removeViewAt(1); 
viewpagerAdapter.removeItem(1); 
viewpagerAdapter.addItem(1, new Fragment(...)); 

어느 업데이트 문제 또는 java.util.ConcurrentModificationException를 해결하는 것은 좋은 것입니다. 도와 줘서 고마워.

+1

안녕하세요. 그 문제에 대한 해결책을 찾을 수 있습니까? 나도 똑같은 문제가 있지만 나를 위해 일하는 해결책을 찾지 못한다. (도움이 될만한 일이 있다면!) 감사합니다. –

+0

아니요, 문제를 해결하지 못했습니다. –

답변

2

이 게시물은 오래되었지만 누구나이 문제에 부딪 힐 경우를 대비하여. 비슷한 게시물 here에서 답을 찾았습니다. 올바른 위치에있는 것처럼 보이지만 게시물에서 제안한 것처럼 FragmentPagerAdapter를 FragmentStatePagerAdapter로 변경하고 getItemPosition (Object)을 재정의해야합니다.

행운을 빈다.

+0

감사합니다. 나는 당신의 방법을 시도했고 효과가 있었지만, 여전히 이상한 경우가 있습니다. 내가 볼 수있는 현재 페이지를 제거하려고하기 때문에 그것은 생각하고, 현재 페이지의 위치에 따라 동작이 달라집니다. 현재 페이지를 제거하기 전에 현재 페이지를 화면 밖으로 전환하여 해결할 수 있다고 생각하지만 시도하지는 않았습니다. –