onClickListener(按钮),使用片段切换ViewPager的视图(onClickList

2019-10-16 17:25发布

我开发一个应用程序,它由三个片段一FragmentActivity的。 我想从第一片段去第三个也是最后一个“下一步”按钮。 对于这一点,我使用的是viewPager和pagerAdpater(我禁用了分页/刷卡上viewpager)。 我的“下一步”按钮,在他们自己的碎片得到落实。 余为每个片段一个XML布局和一个用于容纳所述viewpager的fragmentActivity。

我试图用一个OnClickListener,我可以使用setCurrentItem(index)方法,并从第一个到最后一个视图。

问题是,我不知道我在哪里可以把OnClickListener,因为我没有在我的片段viewpager参考。

我怎样才能得到我的片段viewpager参考? 我必须把我的OnClickListener方法别的地方?

这里是我的3个片段之一的代码:

public class InitializationStep1 extends Fragment{
private PagerAdapter mPagerAdapter;

CustomViewPager pager;

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View v = (LinearLayout)inflater.inflate(R.layout.initialization_step1_layout, container, false);

    Button button = (Button) v.findViewById(R.id.goToStep2);
    button.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            CustomViewPager pager = (CustomViewPager) v.findViewById(R.id.viewpager);
            if(pager == null)
                System.out.println("It's null..."); // always getting a null value
            else
                pager.setCurrentItem(0);
        }
    });

    return v;
}
@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    setUserVisibleHint(true);
   }
}

这是我的FragmentActivity:

public class Initialization extends FragmentActivity{
private PagerAdapter mPagerAdapter;

CustomViewPager pager;
Button b1;
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    super.setContentView(R.layout.viewpager_initialization_layout);

    //initialize the pager

    List<Fragment> fragments = new Vector<Fragment>();
    fragments.add(Fragment.instantiate(this, InitializationStep1.class.getName()));
    fragments.add(Fragment.instantiate(this, InitializationStep2.class.getName()));
    fragments.add(Fragment.instantiate(this, InitializationStep3.class.getName()));
    this.mPagerAdapter = new PagerAdapter(super.getSupportFragmentManager(), fragments);

    pager = (CustomViewPager)super.findViewById(R.id.viewpager);
    pager.setPagingEnabled(false);
    pager.setAdapter(this.mPagerAdapter);
    pager.setCurrentItem(0);
    }
}

总结这一切,我有:
- 实现3个片段(1,2和3)
我想获得:
- 包含一个按钮每个片断进入下一个片段(1 - > 2 - > 3)。
- 包含“完成”按钮的最后一个片段(因为不存在下一片段导航到)

我认为这是一个很简单的动作,但我在Android开发相对较新,无法弄清楚这一点。 我也许试图用错误的组件来做到这一点。

谢谢

Answer 1:

我有同样的问题,试试这个! 在初始化FragmentActivity:

public CustomViewPager getpager(){
        return pager;
    }

在 “InitializationStep1”:

CustomViewPager pager;
public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {

    View v = (LinearLayout)inflater.inflate(R.layout.initialization_step1_layout, container, false);
    pager = ((Initialization)getActivity()).getpager();

    Button next = (Button) v.findViewById(R.id.button1);
    next.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            pager.setCurrentItem(2);
        }
    });

通过这种方式,你可以得到您在FragmentActivity声明viewpager对象,所以你可以使用它在每个片段中,只要你想片段之间切换!



文章来源: onClickListener (buttons) to switch view of ViewPager using Fragments