Activity的生命周期
如上图
Activity的跳转和数据传递
跳转
//显示跳转方法1最常用
//之前我们经常使用的Intent,他的构造方法有两个参数
//第一个参数从哪里开始跳转(context),跳转去哪里(context)
Intent intent = new Intent(AAcitivity.this,BAcitvity.class);
startActivity(intent);
//显示跳转方式2,反射
// Intent intent = new Intent();
// intent.setClass(AAcitivity.this,BAcitvity.class);
// startActivity(intent);
//显示跳转方式3
//AndroidStudio路径较难把握(复制了三个路径还是不行。。。。),感觉不好用,原来的类的单词还拼错了
// Intent intent = new Intent();
// intent.setClassName(AAcitivity.this,"com.example.myapplication.jump.BAcitvity");
// startActivity(intent);
// //显示跳转方法4
// Intent intent = new Intent();
// intent.setComponent(new ComponentName(AAcitivity.this,"com.example.myapplication.jump.BAcitvity"));
// startActivity(intent);
隐式跳转还需要注意在Manifest上对应的的启动activity上的标签下增加这一段
数据传递
统一都写在了一个按钮的点击事件中
//来简单解释一下bundle的原理,我们要通过intent传给另一个Activity,intent里可以带一个bundle,而bundle塞了数据
Intent intent = new Intent(AAcitivity.this,BAcitvity.class);
//数据传递通过bundle,putExtra()方法本质上也是new了一个Bundle
Bundle bundle = new Bundle();
bundle.putString("name","死小孩");
bundle.putInt("age",88);
//putExtras()方法可以只塞bundle
intent.putExtras(bundle);
startActivity(intent);
在B上写了个TextView,用来接收数据
startActivityForResult:启动Activity,结束后返回结果
在后一个Activity完成使用后,当我们按下返回键时,我们希望从B回调数据给A,那么我们可以用这个方法
A中的代码
Intent intent = new Intent(AAcitivity.this,BAcitvity.class);
//数据传递通过bundle,putExtra()方法本质上也是new了一个Bundle
Bundle bundle = new Bundle();
bundle.putString("name","死小孩");
bundle.putInt("age",88);
//putExtras()方法可以只塞bundle
intent.putExtras(bundle);
//intent本身有意图的意思,启动之后放入这个intent就可跳转
//第二个参数:请求码
//作用:将回调的数据进行分组,在多个事件回调数据时,我们可以根据请求码来判断我们在什么时候回调了什么数据,从而实现逻辑分组
startActivityForResult(intent,0);
//如何在A中接受数据呢?
@Override
protected void onActivityResult(int requestCode, int resultCode, @Nullable Intent data) {
super.onActivityResult(requestCode, resultCode, data);
ToastUtil.showMsg(AAcitivity.this,data.getExtras().getString("title"));
}
B中的代码
private TextView mTvTitle;
private Button mBtnFinish;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_b);
mTvTitle = findViewById(R.id.tv_show);
mBtnFinish = findViewById(R.id.btn_finish);
//在BActivity中,就要接收传过来的intent和Extras,两边的key需要一致
Bundle bundle = getIntent().getExtras();
String name = bundle.getString("name");
int age = bundle.getInt("age");
mTvTitle.setText(name+","+age);
mBtnFinish.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
//回调数据时,我们任然使用bundle和intent回传数据
Intent intent = new Intent();
Bundle bundle1 = new Bundle();
bundle1.putString("title","我又回来了");
intent.putExtras(bundle1);
setResult(AAcitivity.RESULT_OK,intent);
finish();
}
});
}
}