通过startActivityForResult和setResult获得返回值
startActivityForResult
如下是一个例子:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(MainActivity.this,OtherActivity.class);
intent.putExtra("first",first.getText().toString());
intent.putExtra("second",second.getText().toString());
startActivityForResult(intent, requestCode);
}
});
其中startActivityForResult
的两个参数分别是,获得传递的意图以及确定返回值是哪一个方法发起的。
同时必须声明onActivityResult
方法对返回的值进行处理。
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(resultCode == RESULT_OK){
if(requestCode == 1){
int three = Integer.parseInt(data.getStringExtra("result"));
result.setText(String.valueOf(three));
}
}else{
result.setText("结果错误");
}
// result.setText("dasdf");
Toast.makeText(this,"ceshiyong",Toast.LENGTH_SHORT).show();
}
其中三个参数的含义:
1. requestCode
这个是intent
发起类中确定的参数用来确定是哪个方法发起的
2. resultCode
这个是setResult
返回的已确定是哪个类返回的参数
3. data
这个是setResult
返回的参数
setResult
例子如下:
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(OtherActivity.this,MainActivity.class);
intent.putExtra("result",String.valueOf(editText.getText()));
//startActivity(intent);
setResult(RESULT_OK,intent);
finish();
}
});
需要注意的是在结束后一定要finish()
结束这个Activity