您的位置:首页 > 移动开发 > Android开发

startActivityForResult和setResult

2015-11-05 09:55 507 查看

通过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
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android