Android Activity与Fragment之间的跳转实例详解
更新时间:2017年02月03日 16:47:28 投稿:lqh
这篇文章主要介绍了Android Activity与Fragment之间的跳转实例详解的相关资料,需要的朋友可以参考下
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强制设定横屏时,SurfaceView一直黑屏
本文主要介绍了Android强制设定横屏时,SurfaceView一直黑屏的方法。具有一定的参考作用,下面跟着小编一起来看下吧2017-01-01Android编程之ListPreference用法实例分析
这篇文章主要介绍了Android编程之ListPreference用法,结合实例形式较为详细的分析说明了ListPreference的功能、用法及相关注意事项,需要的朋友可以参考下2015-12-12详解Androidstudio3.0 关于Gradle报错的问题(小结)
本篇文章主要介绍了详解Androidstudio3.0 关于Gradle报错的问题(小结),具有一定的参考价值,感兴趣的小伙伴们可以参考一下2017-10-10
最新评论