2016-12-10 1 views
0

에서 ViewPager 조각의 공개 방법에 액세스 나는 XML은 ViewPagerRelativeLayout을 유지하는 주요 활동이있다.주요 활동

FragmentgetFoo() (분명히 foo를 반환)이라는 public 메서드가 있습니다.

질문 : Fragment의 기본 활동에서 foo을 얻는 올바른 방법은 무엇입니까?

ViewPager에서 addOnPageChangeListener()을 사용해 보았지만 Fragment의 활성 인스턴스를 가져올 수 없습니다.

+0

"는 ViewPager에 addOnPageChangeListener을 사용하려고하지만, 다음 - 조각 위치의 활성 인스턴스를 얻을 수 없습니다"- 당신은 당신의 viewpager 어댑터에 조각의 목록을 통과 한 경우 (onPageChanged에서 인덱스 조각을 검색 할 수 있습니다) –

답변

2

FragmentStatePagerAdapter은 자신 만의 ArrayAdapter처럼 확장 할 수 있습니다.

는 단지 adapter.getItem(position).getFoo()

아주 최소한의 예를 사용하여, (생성자 통과) 점에서 List<Fragment>를 잡습니다.

public MyFragmentStatePagerAdapter extends FragmentStatePagerAdapter { 
    private List<Fragment> fragments; 

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

    public int getCount() { return fragments.size(); } 
    public Fragment getItem(int position) { return fragments.get(position); } 
} 
+0

이것은 올바른 접근 방법이라고 생각합니다. 나는이 튜토리얼을 사용했다 : https://developer.android.com/training/animation/screen-slide.html 사물이 조금 다른 정의가되었지만, 당신의 접근 방식은 내가 지금 떠나고있다. – Oleg

+0

가이드는 슬라이드 할 때마다 조각을 다시 만듭니다. 이 대답은 모든 조각의 상태를 "저장"하는 능력을 제공합니다. –

+0

예. 나는 그 앱이 일주일 동안 7 개의 슬라이드 목록을 만들길 원한다. 따라서 사용자는 슬라이드 할 수 있습니다. 사용자가 주 범위를 벗어나면 슬라이드가 파괴되고 다른 7 개의 슬라이드가 생성됩니다. 각 그룹의 데이터는 데이터베이스에서 저장/불러 오기됩니다. – Oleg

관련 문제