Fragment是activity界面的一部分活着一种行为,它不能独立存在,必须嵌入到activity中,而且fragment的生命周期受所在activity的影响。所以fragment之间并不能直接像activity一样跳转。但是我们可以通过回调函数,用activity来控制切换fragment,实现好像fragment之间直接跳转的功能。
做法是在需要跳转的fragment里面实现一个回调接口,然后要求主activity来实现它。当activity通过这个接口接到一个回调,来控制切换的界面。
/** * * * @author hx * @version 2014-12-01 * */ public class DemoFragment extends Fragment{ DemoFragmentSelectedListener mCallback; //创建回调接口,实现碎片之间的切换 public interface DemoFragmentSelectedListener { public void onArticleSelected(int position); } public void onAttach(Activity activity) { super.onAttach(activity); // 确认容器activity已经实现接口 // 回调接口。如果没有,抛出异常 try { mCallback = (DemoFragmentSelectedListener) activity; } catch (ClassCastException e) { throw new ClassCastException(activity.toString() + " must implement OnHeadlineSelectedListener"); } } //实现待跳转界面里面的事件,调用mCallback.onArticleSelected()传递对应的参数。 }
在主activity中实现接口DemoFragmentSelectedListener:
/** * * * @author hx * @version 2014-12-01 * */ public class MainActivity extends Activity implements DemoFragment.DemoFragmentSelectedListener{ //实现searchFragment的接口,实现界面的跳转 @Override public void onArticleSelected(int position) { // TODO Auto-generated method stub DemoFragment1 newFragment = new DemoFragment1(); Bundle args = new Bundle(); args.putInt("position", position); newFragment.setArguments(args);//传递参数 android.app.FragmentTransaction transaction = getFragmentManager().beginTransaction(); transaction.replace(R.id.content_frame, newFragment);//替换跳转 transaction.addToBackStack(null); transaction.commit(); } }
在跳转到的DemoFragment1中接收参数。
/** * * * @author hx * @version 2014-12-01 * */ public class DemoFragment1 extends Fragment{ public void onCreate(Bundle savedInstanceState){ super.onCreate(savedInstanceState); //获取DemoFragment传递过来的参数。 int position = (Integer) getArguments().get("position"); } }
相关推荐
Android 两个Fragment之间的跳转和数据的传递实例详解 作为一个Android的菜鸟,前些天在做项目的时候用到了fragment,需求是从一个Fragment跳转到另一个Fragment,并且还要传递数据,就像Activity的跳转一样。在...
fragment切换动画的特效库
Android fragment切换动画
Fragment实现切换界面 点击下方的每一个布局 实现跳转
通过fragment 简单的实现页面的切换实现 代码简单 易懂
利用TabLayout、ViewPager、Fragment实现滑动切换页面
经常会遇到在一个activity界面上布局多个fragment,但是如何从一个fragment跳转到另一个fragment呢?今天在做项目中恰好遇到这样的问题,点击首页fragment的更多店铺,会切换到店铺的fragment,处理的步骤如下: 1、...
前言 纵观市场,大多数的APP都采用导航+fragment这种...MainActivity中成员方法test(),fragment中经test()方法判断后,方可执行下一步操作,如执行界面跳转; 例: public class MainActivity extends Activity{
fragment和activity之间的切换,3个小项目,适合初学者。
关于侧滑菜单与Fragment结合使用切换不同页面,目前应用程序主流框架实现
主要为大家详细介绍了android实现点击按钮切换不同的fragment布局,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
作者xuexiangjys,代表XPage。 介绍:一个非常方便的 fragment 页面框架。 特征 支持 assets 下“corepage.json”静态配置 Fragment 页面信息。...支持 Fragment 之间、activity 和 fragment 之间的数据交互。
activity A嵌套fragment B,B嵌套fragment C,C跳转到activity D,当activity D被finish掉之后,C中容易爆出getActivity为空.如果你的activity被回收了,那你需要在bundle中保存一下fragment信息,我的解决方法:fragment...
Android官方已经提供了Fragment的各种使用的Demo例子,在我们SDK下面的API Demo里面就包含了Fragment的各种使用例子,需要看Demo的朋友,直接看API Demo那个程序就可以了,不用到处去找。里面分开不同功能,实现了...
Android Activity ABC页面跳转生命周期变化及activity + fragment生命周期变化
FragmentDemo小项目,主要有页跳转,切换页面,不同页面可以放不同内容,多个Fragment同时出栈的深坑BUG,
Fragment切换demo采用自定义FragmentTabHost,继承了TabHost使用方法在activity中写下 FragmentTabHost mFragmentTabHost = (FragmentTabHost) findViewById(R.id.tabhost); mFragmentTabHost.setup(this, ...
androidstudio 切换fragment,实现一个activity中fragment页面的跳转
Android 微信点击和滑动切换功能,Android 微信点击和滑动切换功能使用viewpager+fragment的懒加载实现微信点击和滑动切换功能