简体   繁体   English

如何使用Button在ViewPager中切换片段?

[英]How to use Button to switch fragments in a ViewPager?

I have 3 main fragments inside viewpager and they have couple of buttons. 我在viewpager中有3个主要片段,它们有几个按钮。 I want each button to navigate to another fragment and back button to get back to main fragment. 我希望每个按钮导航到另一个片段和后退按钮以返回主片段。 I tried to add fragment transaction but it does not work. 我试图添加片段事务,但它不起作用。 What am I doing wrong here? 我在这做错了什么?

this is one of the main fragments 这是主要的碎片之一

public class OneFragment extends Fragment implements View.OnClickListener{


    public OneFragment() {

    }


    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

    }

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

        return inflater.inflate(R.layout.fragment_one, container, false);
    }


    @Override
    public void onClick(View v) {
        switch (v.getId()){
            case R.id.aButton:
                FragmentManager manager = getFragmentManager();
                FragmentTransaction transaction = manager.beginTransaction();
                transaction.replace(R.id.fragment_one, AFragment.newInstance()); 
                transaction.commit();
                break;
        }
    }
}

this is the fragment I want to navigate 这是我想要导航的片段

public class AFragment extends Fragment{

    public AFragment() {

    }
    public static AFragment newInstance() {
        AFragment fragment = new AFragment();
        return fragment;
    }

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);


    }

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

        return inflater.inflate(R.layout.a_fragment, container, false);
    }

}

First, define a public method in your Activity to switch tabs in the ViewPager, and also define the onBackPressed() override, which will select the first index when the back button is pressed: 首先,在Activity中定义一个公共方法来切换ViewPager中的选项卡,并定义onBackPressed()重写,它将在按下后退按钮时选择第一个索引:

public void selectIndex(int newIndex) {
  mViewPager.setCurrentItem(newIndex);
}

@Override
public void onBackPressed() {
  int currentPosition = mViewPager.getCurrentItem();
  if (currentPosition != 0) {
        mViewPager.setCurrentItem(0);
  } else {
    super.onBackPressed();
  }
}

Then, modify the click listener in the Fragment in order to call the selectIndex() method: 然后,修改片段中的单击侦听器以调用selectIndex()方法:

@Override
public void onClick(View v) {
    switch (v.getId()){
        case R.id.aButton:
            //select the index of AFragment:
            ((MainActivity)getActivity()).selectIndex(1);
            break;
    }
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM