在进行界面跳转的时候,需要获取跳转之后的界面的数据和状态信息,使用onActivityResult可以解决这个问题。
Intent serverIntent = new Intent(this, DeviceListActivity.class);
startActivityForResult(serverIntent, 1);
这里从A跳转到B,1处设置一个>=0的数据,作为B界面的标记
startActivityForResult(Intent Intent, int requestCode):
该方法要在onCreate中调用,传递的参数有两个,一个是Intent,intent中可以携带传递的数据;另一个是int型的请求码Code,请求码可以自己定义。
请求码的作用:为了区分启动不同的Intent,或者传递不同的数据使用,作为一种不同启动的标识。比如A有两个Button都要启动B,为了区分是哪个Button启动的B,我们就要设置两个不同的请求码来区分。或者2个按钮同时请求2个不同的界面,设置请求码来区分是哪个界面返回的值。
这个方法是启动B的启动方法,调用之后会跳转到界面B,并传递相应的数值。同时,对于具体Intent传递的数值,可以使用接下来讲解的onActivityResult()方法来传递,这样启动方法和数据操作方法分开写,会更好。
下面是一个实例 方便理解
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SettingActivity.class);
startActivityForResult(intent,1); //1请求码1 代表了A界面
}
});
button2.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,SettingActivity2.class);
startActivityForResult(intent,2); //2请求码2 代表了B界面
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
switch (requestCode) {
case 1://A界面返回内容处理
if (resultCode == 1) {
text.setText(data.getStringExtra(“data”));
} break;
case 2://B界面返回内容处理
if (resultCode == 2) {
text.setText(data.getStringExtra(“data2”));
} break;
}
}
界面返回值:
Intent intent = new Intent();
intent.putExtra(“data”, editText.getText().toString());
setResult(1,intent);
finish();