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");
}
}
}
感谢阅读,希望能帮助到大家,谢谢大家对本站的支持!