我在将值传递给我的课时遇到了问题:
public class FragmentViewPager extends Fragment {
public static int p;
private FragmentPagerItemAdapter adapter;
private static final String TAG = "log";
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_view_pager, container, false);
adapter = new FragmentPagerItemAdapter(
getChildFragmentManager(), FragmentPagerItems.with(getActivity())
.add("1", AnimalsFragment.class)
.add("2", AnimalsFragment.class)
.add("3", AnimalsFragment.class)
.add("4", AnimalsFragment.class)
.add("5", AnimalsFragment.class)
.create());
ViewPager viewPager = (ViewPager) view.findViewById(R.id.viewpager);
viewPager.setAdapter(adapter);
SmartTabLayout viewPagerTab = (SmartTabLayout) view.findViewById(R.id.viewpagertab);
viewPagerTab.setViewPager(viewPager);
// определяем позицию фрагмента
viewPager.addOnPageChangeListener(new ViewPager.OnPageChangeListener() {
@Override
public void onPageScrolled(int position, float positionOffset, int positionOffsetPixels) {}
@Override
public void onPageSelected(int position) {
p = position;
}
@Override
public void onPageScrollStateChanged(int state) {}
});
return view;
}
}
我得到了值:
public class AnimalsFragment extends Fragment implements View.OnClickListener {
...
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
final View view = inflater.inflate(R.layout.fragment_animals, container, false);
// получаем позицию фрагмента
position = FragmentViewPager.p;
Log.i(TAG, "position = " + position);
...
日志:
I/log: position = 1
I/log: position = 2
I/log: position = 3
有5个片段,第一个' 0'最后' 4'不显示。 但是如果在方法onPageSelected()中放置日志,则会正确显示日志。 如何正确传达类中的分页值?
答案 0 :(得分:1)
ViewPager
创建您可以设置的当前,上一个和下一个片段,并使用ViewPager的setOffscreenPageLimit
方法更改数字。 (默认值为1.您不能将其设置为0.。
因此,当您将日志代码放入onCreateView
时,将创建3个Fragments
,并且您将看到日志三次,而您的p变量将是最后创建的片段&#39 ; s位置,因为您的默认屏幕限制为1。
当您将日志代码放在onPageSelected
时,只有您的日志会在您ViewPager
时滑动。
您可以在这里查看更多详细信息: https://developer.android.com/reference/android/support/v4/view/ViewPager.html