Android Activity与Fragment之间的跳转实例详解
程序员文章站
2023-12-20 11:29:10
activity及fragment之间的跳转
直接跳转
基本使用方法
public class mainactivity extends appcompata...
activity及fragment之间的跳转
直接跳转
基本使用方法
public class mainactivity extends appcompatactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } public void jump(view view) { intent intent = new intent(this, videoplayactivity.class); intent.putextra("video_id", "1"); startactivity(intent); } }
public class videoplayactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_video_play); intent intent = getintent(); } }
借助工具类
然而并没什么卵用
public static void startactivity(context context, class clazz,bundle data) { intent intent = new intent(context, clazz); if(data != null){ intent.putextras(data); } context.startactivity(intent); }
推荐方案
- 把new intent()放在目标activity,这样可以oncreate里的getintent形成对应
- 更容易理解和管理一个出口,多个入口的情况
- 较方便维护传递数据的key和value(即key由目标activity来定义,value是实际的来源)
public class mainactivity extends appcompatactivity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); } public void jump(view view) { startactivity(videoplayactivity.newintent(this, "1")); } }
public class videoplayactivity extends activity { @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_video_play); } public static intent newintent(context context, string vid) { intent intent = new intent(context, videoplayactivity.class); intent.putextra("video_id", vid); return intent; } }
fragment跳转
- 首先需要一个空的构造方法,fragment恢复重建要使用。
- 使用newinstance代替构造方法传参
- 在fragment.oncreate方法获取实参
public class mainfragment{ public mainfragment() { // required empty public constructor } public static mainfragment newinstance(int pos) { mainfragment fragment = new mainfragment(); bundle args = new bundle(); args.putint("pos", pos); fragment.setarguments(args); return fragment; } @override public void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); if (getarguments() != null) { pos = getarguments().getint("pos"); } } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!
推荐阅读
-
Android中Service与Activity之间通信的几种方式
-
Android中Activity之间跳转和参数传递的实例
-
Android编程中activity的完整生命周期实例详解
-
Android 中Fragment与Activity通讯的详解
-
Android编程中activity的完整生命周期实例详解
-
Android 中Fragment与Activity通讯的详解
-
Android Activity的跳转与传值详解
-
Android Fragment滑动组件ViewPager的实例详解
-
详解Android Activity之间跳转出现短暂黑屏的处理方法
-
Android Activity的跳转与传值详解