首页 > 学院 > 开发设计 > 正文

activity和fragment跳转

2019-11-09 15:52:17
字体:
来源:转载
供稿:网友
fragment 和 activity之间的跳转 ①fragment跳转到activitystartActivity(new Intent(getActivity(),MyActivity.class));

②activity跳转到fragment activity不能直接跳转到fragment,需要先跳转到fragment所附着的activity中,然后再更改activity当前显示哪个fragment。

intent.put("id",1);//传入一个flag,用来标识跳转到哪一个fragment。FragmentTransaction ft = getSupportFragmentMannager().beginTransaction();//flag来判断显示哪个fragment。ft.replace(R.id.frame_content,new CenterFragment());

*动态添加Fragment主要分为4步: 1.获取到FragmentManager,在V4包中通过getSupportFragmentManager,在系统中原生的Fragment是通过getFragmentManager获得的。 2.开启一个事务,通过调用beginTransaction方法开启。 3.向容器内加入Fragment,一般使用add或者replace方法实现,需要传入容器的id和Fragment的实例。 4.提交事务,调用commit方法提交。*

fragment之间的跳转 fragment必须附着在activity上,所以fragment之间的跳转也必须依赖于activity。FragmentF必须放在FragmentLayout这个布局里面,所以要在xml中加上FragmentLayout这个标签,并给id。FragmentManager fm = MainActivity.getSupportFragmentManager();//MainActivity当前fragment所附着的activityFragmentTransaction ft = fm.beginTransaction();MyFragment fragment = new MyFragment();ft.replace(R.id.fragment,fragment);ft.commit();// 最后不要忘记commitactivity之间的跳转 ①不需要返回值的跳转startActivity(new Intent(this,MyActivity.class));

②带返回值的跳转 ActivityA中:

startActivityForResult(new Intent(this, ActivityB.class), requestCode);//并重写onActivityResult方法,来响应ActivityB来的跳转:PRotected void onActivityResult(int requestCode, int resultCode, Intent data) { super.onActivityResult(requestCode, resultCode, data);// 这里只需要判断requestCode是否等于startActivityForResult()中的code,就可以知道是哪个跳转的。switch (requestCode) {case Constant.result_select_province:if(data != null){// do something 当然做之前最好要判断下data是否为null,预防发生空指针异常。}break;}

ActivityB中:当要返回ActivityA的时候,要用setResult方法,具体如下:setResult(resultCode, Intent);


发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表