[英]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.