Android Activity与Fragment之间的跳转实例详解
Activity及Fragment之间的跳转
直接跳转
基本使用方法
publicclassMainActivityextendsAppCompatActivity{ @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } publicvoidjump(Viewview){ Intentintent=newIntent(this,VideoPlayActivity.class); intent.putExtra("video_id","1"); startActivity(intent); } }
publicclassVideoPlayActivityextendsActivity{ @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_video_play); Intentintent=getIntent(); } }
借助工具类
然而并没什么卵用
publicstaticvoidstartActivity(Contextcontext,Classclazz,Bundledata){ Intentintent=newIntent(context,clazz); if(data!=null){ intent.putExtras(data); } context.startActivity(intent); }
推荐方案
- 把newIntent()放在目标Activity,这样可以onCreate里的getIntent形成对应
- 更容易理解和管理一个出口,多个入口的情况
- 较方便维护传递数据的key和value(即key由目标Activity来定义,value是实际的来源)
publicclassMainActivityextendsAppCompatActivity{ @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); } publicvoidjump(Viewview){ startActivity(VideoPlayActivity.newIntent(this,"1")); } }
publicclassVideoPlayActivityextendsActivity{ @Override protectedvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); setContentView(R.layout.activity_video_play); } publicstaticIntentnewIntent(Contextcontext,Stringvid){ Intentintent=newIntent(context,VideoPlayActivity.class); intent.putExtra("video_id",vid); returnintent; } }
Fragment跳转
- 首先需要一个空的构造方法,Fragment恢复重建要使用。
- 使用newInstance代替构造方法传参
- 在Fragment.onCreate方法获取实参
publicclassMainFragment{ publicMainFragment(){ //Requiredemptypublicconstructor } publicstaticMainFragmentnewInstance(intpos){ MainFragmentfragment=newMainFragment(); Bundleargs=newBundle(); args.putInt("pos",pos); fragment.setArguments(args); returnfragment; } @Override publicvoidonCreate(BundlesavedInstanceState){ super.onCreate(savedInstanceState); if(getArguments()!=null){ pos=getArguments().getInt("pos"); } } }
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!