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)
首先,在你的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)
| 归档时间: |
|
| 查看次数: |
1288 次 |
| 最近记录: |