切换Activity

1
2
Intent intent = new Intent(LoginActivity.this, MainActivity.class);
startActivity(intent);

给子Activity传递数据

如果给新启动的子Activity传递数据,只需要在Intent对象中加入key-value,key为准备传递数据的字符指示名称,value为准备传递的数据

1
2
intent.putExtra("KEY",data);
startActivity(intent);
1
2
3
4
5
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
int data= getIntent().getIntExtra("KEY"); // DataType用需要的数据类型
}

从子Activity返回数据

1
2
3
4
Intent intent = new Intent();
intent.putExtra(“KEY”, data);
setResult(RESULT_OK, intent);
this.finish();

setResult(RESULT_OK, intent) 设置子Activity要返回父Activity(打开新Activity的Activity)的信息,RESULT_OK为int值,表子Activity成功执行完毕,intent里面就是包含要返回的数据。

记得要关闭哦 finish()在父Activity中如果要接收子Activity的返回结果,需要使用 startActivityForResult(intent, requestCode)打开子Activity,并且要重写 onActivityResult方法

1
2
3
4
5
6
7
8
9
10
/*............*/
Intent intent = new Intent(this, DrugLibActivity.class);
startActivityForResult(intent, 10);
/*............*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if (10 == requestCode) {
int index = data.getIntExtra(KEY,0);
}
}

如果在同一个Activity中有多个地方可调用 startActivityForResult 打开多个子 Activity 的情况,那你应该在 onActivityResult 返回时判断 requestCode,这样你就能搞清楚是哪个子Activity返回了数据。


参考:https://www.cnblogs.com/dw039/p/7411210.html