當我在viewpager中從項目0到2中獲取子視圖時,它工作正常。當我從3開始嘗試獲取子視圖時,它將返回null。我如何獲得viewpager的所有當前所選子視圖?在Viewpager中獲取當前所選項目的子視圖
被修改:
View view = viewPager.getChildAt(viewPager.getCurrentItem());
當viewPager.getCurrentItem()向前達到了3,則視圖返回空。
當我在viewpager中從項目0到2中獲取子視圖時,它工作正常。當我從3開始嘗試獲取子視圖時,它將返回null。我如何獲得viewpager的所有當前所選子視圖?在Viewpager中獲取當前所選項目的子視圖
被修改:
View view = viewPager.getChildAt(viewPager.getCurrentItem());
當viewPager.getCurrentItem()向前達到了3,則視圖返回空。
你需要訪問你在你的ViewPager
使用Fragments
。
在這個答案中https://stackoverflow.com/a/39274141/1559852我試着解釋如何修改ViewPager's
適配器o使您在ViewPager
中使用的片段可訪問。
後您實現鏈路的代碼,你就可以訪問你的碎片,它的意見。
定義一個公共的方法來你的碎片象下面這樣:
public View getMyFragmentView(){
return this.mView();
}
最後添加一個OnPageChangeLsitener
您ViewPager
如下面的代碼。
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {
}
@Override
public void onPageSelected(int position) {
// Here's your instance
final YourFragment fragment =(YourFragment)yourPagerAdapter.getRegisteredFragment(position);
final View theViewYouWantToAccess = yourFragment.getMyView();
}
@Override
public void onPageScrollStateChanged(int state) {
}
});
編輯:在你ViewPager適配器Fragment
到SparseArray
@Override
public Fragment getItem(int position) {
final YourFragment fragment = new YourFragment();
// Register your fragment to Sparse Array here
registeredFragments.put(position, fragment);
return fragment;
}
感謝您的回覆。但是我怎樣才能首先將所有片段啓動到sparseArray? –
你不需要這個。只需在適配器的getItem方法中返回新片段時將其添加到稀疏數組中。我會編輯我的答案。 – savepopulation
謝謝,我會試試看)=) –
你可以發佈您使用的是澄清問題的代碼,你可以註冊? – zsmb13
您在viewpager中加載了多少片段? –
@JaydeepPatel 5 –