我在将值传递给我的类时遇到了问题:
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个 fragment ,第一个'0'和最后一个'4'不显示。 但是,如果您将日志放在 onPageSelected() 方法中,日志就会正确显示。 如何在类里面正确传达分页的值(value)?
最佳答案
ViewPager
创建当前、上一个和下一个 fragment ,您可以使用 ViewPager 的 setOffscreenPageLimit
方法设置和更改数量。 (默认为1,不能设置为0。)
因此,当您将 Log 代码放入 onCreateView
时,您的 3 个 Fragments
将被创建,您将看到 log 三次,而您的 p 变量将是最后一个由于您的默认屏幕限制为 1,因此创建了 fragment 的位置。
当您将日志代码放在 onPageSelected
中时,您的日志只会在您滑动 ViewPager
时工作。
您可以在此处查看更多详细信息: https://developer.android.com/reference/android/support/v4/view/ViewPager.html
关于java - 传递值 Pager Fragment,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43340669/