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

gun*_*tan 1 java android android-fragments

我在 viewpager 中有 3 个主要片段,它们有几个按钮。我希望每个按钮导航到另一个片段,后退按钮返回主片段。我试图添加片段事务,但它不起作用。我在这里做错了什么?

这是主要片段之一

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;
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

这是我要导航的片段

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);
    }

}
Run Code Online (Sandbox Code Playgroud)

Dan*_*ent 5

首先,在你的Activity中定义一个公共方法来切换ViewPager中的tab,同时定义onBackPressed()override,当按下后退按钮时会选择第一个索引:

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();
  }
}
Run Code Online (Sandbox Code Playgroud)

然后,修改 Fragment 中的单击侦听器以调用该selectIndex()方法:

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