在讲到activity之间的数据传递的时候,最基础的就是利用bundle传递数据,但是这种传递是建立在两个activity跳转的时候进行,多数情况下可以满足开发者的功能需求,但是在一些特殊的情况下利用onactivityresult实现数据的传递会更加方便,今天就讲讲onactivityresult的基本用法。onactivityresult的不同之处在于第二个activity在不跳转的情况下向前一个activity返回数据。
第一个activity的代码
package com.example.activity_1;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class MainActivity extends Activity {
TextView tv;
Button btn;
//请求码,表明当前activity的身份
int REQUEST_CODE=1;
//结果返回码,表明返回数据来自哪个activity
int RESULT_CODE=22;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
tv=(TextView) findViewById(R.id.tv);
btn=(Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
Intent intent=new Intent(MainActivity.this, SecondActivity.class);
startActivityForResult(intent, 1);
}
});
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
// TODO Auto-generated method stub
super.onActivityResult(requestCode, resultCode, data);
//判断返回的数据中请求码和结果码是否匹配
if(requestCode==1){
if(resultCode==22){
//获取返回信息中键对应的值,并把值放在textview中
String s=data.getStringExtra("data");
tv.setText(s);
}
}
}
}
package com.example.activity_1;
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
public class SecondActivity extends Activity {
TextView tv;
Button btn;
int RESULT_CODE=22;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.second);
tv=(TextView) findViewById(R.id.tv);
btn=(Button) findViewById(R.id.btn);
btn.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View arg0) {
// TODO Auto-generated method stub
/*
* 这是是关闭当前的activity,而不是跳转到钱一个activity
* /
*/
Intent intent=new Intent();
intent.putExtra("data", tv.getText().toString().trim());
//处理后返回结果码
setResult(22, intent);
finish();
}
});
}
}
这是程序三个步骤的截图,从第一个activity跳转到第二个activity,关闭第二个activity,第一个activity获取数据后更改第一个activity中的textview中的信息