Activity及Fragment之间的跳转
Posted ihrthk
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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");
以上是关于Activity及Fragment之间的跳转的主要内容,如果未能解决你的问题,请参考以下文章
fragment与activity及两个fragment之间的跳转实现