Java 传递值分页器片段
我在将值传递给我的类时遇到问题:Java 传递值分页器片段,java,android,Java,Android,我在将值传递给我的类时遇到问题: public class FragmentViewPager extends Fragment { public static int p; private FragmentPagerItemAdapter adapter; private static final String TAG = "log"; @Override public View onCreateView(LayoutInflater inflate
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);
...
日志:
共有5个片段,不显示第一个“0”和最后一个“4”。
但如果将日志放在方法onPageSelected()中,则会正确显示日志。
如何在类中正确传递分页的值?
ViewPager
创建当前、上一个和下一个片段,您可以使用ViewPager的setoffscreenpagilemit
方法设置和更改这些片段的编号。(默认值为1。不能将其设置为0。)
因此,当您将日志代码放入onCreateView
时,将创建3个片段
,您将看到三次日志,并且p变量将是最后创建的片段位置,因为默认屏幕限制为1
当您将日志代码放入onPageSelected
时,您的日志仅在您滑动ViewPager
时才起作用
您可以在此处查看更多详细信息:
请发布您的代码,包括PageRadaperAdded full code,但如果您将日志放在方法onPageSelected()中,则会正确显示日志。
I/log: position = 1
I/log: position = 2
I/log: position = 3