fragment与activity及两个fragment之间的跳转实现

在项目中,我们使用到了Android Fragment技术。在应用的交互中,我可能需要实现:

1.从当前的fragment跳转到另一个fragment

2.从当前的fragment跳转到一个activity中

3.从当前的activity跳转到一个fragment中

网上提供的思路较多,这里总结了一套自己的方法。

一、从当前的fragment跳转到另一个fragment

1.在相应fragment全局中声明fragment管理对象及事务对象。

// Fragment管理对象
    private FragmentManager manager;
    private FragmentTransaction ft;

2.在OnCreate方法中初始化fragment管理对象

@Override
    public void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);

        manager = getFragmentManager();
    }

3.从 FragmentManager 获得一个FragmentTransaction实例

MyJDEditFragment myJDEditFragment = new MyJDEditFragment();
ft = manager.beginTransaction();
//当前的fragment会被myJDEditFragment替换
ft.replace(R.id.realtabcontent, myJDEditFragment);
ft.addToBackStack(null);
ft.commit();

4.那么如何在fragment切换的时候还可以传递参数呢?

我们可以使用setArguments()方法绑定一个bundle对象传递到另外一个fragment中。

myJDEditFragment.setArguments(bundle);

在另外一个fragment中(myJDEditFragment)使用getArguments()可以拿到bundle对象。

二、从当前的fragment跳转到一个activity中

由于fragment可以使用 getActivity() 访问Activity实例,所以这一步实现很简单。

intent=new Intent(getActivity(), UserLoginActivity.class);
startActivity(intent);

三、从当前的activity跳转到一个fragment中

如果是从fragment跳转到activity中,然后想从这个activity中再跳转回fragment,这时直接finish这个activity即可。
如果需求是这样的:

在“我要提问”fragment1页面里点击“提交”跳转到“我的提问”里,该如何实现呢?
fragment与activity及两个fragment之间的跳转实现_第1张图片
fragment与activity及两个fragment之间的跳转实现_第2张图片

1、 在对应fragment1中使用意图跳转到MainActivity中,这里通过意图塞入了一个标识符(更严谨的方式是通过请求码和结果码实现)。

Intent intent = new Intent(getActivity(),ActivityHomeworkHelp_new.class);
intent.putExtra("flag", 1);
startActivity(intent);

2.在MainActivity的onResume()方法中得到这个标识符,并且切换到相应的Tab(fragment2)即可。

@Override
    protected void onResume() {
      int id = getIntent().getIntExtra("flag", 0);
      if (id == 1 ) {
          pager.setCurrentItem(1);
      }
      super.onResume();
    }

我用的是ViewPagerIndicator开源项目。

你可能感兴趣的:(【android开发技巧】)