0

viewPager가 있는데 그 안에 조각을 추가합니다. 처음에는 4 조각이 있는데, 마지막 조각을 보여줍니다. 5, 6, 7, 8 첫 번째 단편에 도달하면. 나는 Api Call을 만들고 다른 4 개의 이전 단편에 대한 데이터를 얻습니다 : 1,2,3,4. 내 문제는 그것들을 통과하는 것입니다. 나는 이것을 얻는다 : 8, 7, 6, 5, 8, 7, 6, 5 끝내고 조각을 다시 입력하면 잘 동작한다. 하지만 항상 처음에는 캐시 된 다른 조각을 가지고있는 것 같습니다.ViewPager가 올바른 페이지를 표시하지 않습니다

private List<PSActivityFragment> getFragments(){ 
    UserRecord profile = UserRecord.getMyUser(PSProfileActivity.this); 
    CrudStateCallback crudStateCallback = new CrudStateCallback() { 
     @Override 
     public void onResponse(String string) { 
     } 
    }; 
    List<PSActivityFragment> fList = new ArrayList<PSActivityFragment>(); 
    if(profile != null) { 
     loader.setVisibility(View.GONE); 
     if(profile.getMonths().size() > 0) { 
      for (PSUserActivityMonth month : profile.getMonths()){ 
       Log.i("","month is fragments created are:" + month); 
       PSActivityFragment psaf1 = new PSActivityFragment(); 
       psaf1.init(month, crudStateCallback); 
       fList.add(psaf1); 
      } 
     } 
    }else{ 
     loader.setVisibility(View.VISIBLE); 
    } 
    return fList; 

} 

내가 새로운 데이터를 얻을 때마다 :

이 내가 조각을 만드는 방법이다. 나는 어댑터 재 : 내가 대신 다시 그냥 다시 어댑터에 조각을 설정 다시 어댑터를 설정하는 시도

pager.removeAllViews(); 
    pager = null; 
    pager = (ViewPager) findViewById(R.id.viewpager); 
    final List<PSActivityFragment> fragments = getFragments(); 
    myPagerAdapter = new MyPageAdapter(getSupportFragmentManager(), fragments); 
    pager.setAdapter(myPagerAdapter); 

을하고 notifyDataSetChanged를 호출합니다. 하지만 여전히 같은 문제가 있습니다. 조각이 어딘가에 캐시되어 있습니까? 왜 이런 일이 생길까요? 는 I 로그를 점검하고 단편 정상적인 순서로 생성된다 : 16 월 16 일이, 제 (16 행진 수 6 월 16

06-02 14:16:21.514: I/(14192): month is fragments created are:PSUserActivityMonth{category='u/23', month=11, year=2015, weeks=1} 
06-02 14:16:21.515: I/(14192): month is fragments created are:PSUserActivityMonth{category='u/23', month=12, year=2015, weeks=5} 
06-02 14:16:21.515: I/(14192): month is fragments created are:PSUserActivityMonth{category='u/23', month=1, year=2016, weeks=5} 
06-02 14:16:21.515: I/(14192): month is fragments created are:PSUserActivityMonth{category='u/23', month=2, year=2016, weeks=5} 
06-02 14:16:21.515: I/(14192): month is fragments created are:PSUserActivityMonth{category='u/23', month=3, year=2016, weeks=5} 
06-02 14:16:21.516: I/(14192): month is fragments created are:PSUserActivityMonth{category='u/23', month=4, year=2016, weeks=5} 
06-02 14:16:21.516: I/(14192): month is fragments created are:PSUserActivityMonth{category='u/23', month=5, year=2016, weeks=6} 
06-02 14:16:21.516: I/(14192): month is fragments created are:PSUserActivityMonth{category='u/23', month=6, year=2016, weeks=1} 

이들은 개월 :이 호출기를 순환 후에 표시되어야 를 위해) 그리고 그 다음에 feb 16, jan 16, dec 15, nov15. 대신 I 참조 : 6 월 16 일 16 월 16 년 6 월 16 일 (제 1 경우) 후 16 행진 있고, 16 월 16, 16 행진 수도 다시

어댑터 코드 :

public class MyPageAdapter extends FragmentPagerAdapter { 

private List<PSActivityFragment> fragments; 


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

@Override 

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


@Override 

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

} 

PS : 내 활동은 fragmentActivity를 확장하고 어댑터를 만들 때 볼 수있는 것처럼 getSupportFragmentManager를 사용합니다. 이것이 문제가 될 수 있습니까?

+0

어댑터 코드를 게시 할 수 있습니까? – arsena

+0

조각을 어떻게 게시했는지 게시해야합니까? 그것이 어떻게 환영받을 수 있는지 보지 마라. –

답변

0

FragmentActivity 및 getSupportFragmentManager를 사용한 활동 사용. 그게 문제일지도 모른다고 생각 했으니 까.

if(getSupportFragmentManager() != null && getSupportFragmentManager().getFragments() != null){ 
     getSupportFragmentManager().getFragments().clear(); 
    } 

그리고 지금은 작동합니다!

관련 문제