[英]How to use Button to switch fragments in a ViewPager?
我在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;
}
}
}
這是我想要導航的片段
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);
}
}
首先,在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();
}
}
然后,修改片段中的單擊偵聽器以調用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.