实验名称:返回数据给上一个活动
实验现象:第二个活动按键点击进入第一个活动,出现Hello FirstActivity
使用技术:startActivityForReques方法、onActivityRequest()方法
步骤:
1、新建一个项目,创建主活动,加载布局,布置一个button
2、再次新建一个活动,加载布局,同时放置一个button
3、修改第一个活动的按键点击事件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
Button button=(Button) findViewById(R.id.button1);
button.setOnClickListener(new View.OnClickListener(){
@Override
public void onClick(View v){
Intent intent=new Intent(MainActivity.this,Main2Activity.class); //启动第二个活动
startActivityForResult(intent,1); //启动这个intent,启动请求码是1
}
});
}
4、修改第二个活动的按键点击事件
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main2);
Button button2=(Button) findViewById(R.id.button2); //获得按键值
button2.setOnClickListener(new View.OnClickListener() { //设置按键的监听事件
@Override
public void onClick(View view) { //按键点击事件
Intent intent=new Intent(); //构建一个Intent
intent.putExtra("data_return","Hello FirstActivity"); //数据内容
setResult(RESULT_OK,intent); //向上一个活动返回数据
finish(); //结束这个活动
}
});
}
setResult()方法:接收2个参数,第一个参数用于向上一个活动返回处理结果,一般只使用RESULT_OK或者RESULT_CANCELED这2个值。第二个参数一般则把带有数据的Intent传递回去。
5、在第一个活动的onActivityResult()方法中重写,得到返回的数据
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
switch(requestCode){
case 1:
if(resultCode==RESULT_OK){
String returnedData=data.getStringExtra("data_return");
Log.d("FirstActivity",returnedData);
}
break;
default:;
}
}
onActivityResult()方法:带有3个参数,第一个参数是requestCode,即我们在启动活动时传入的请求码。第二个参数是resultCode,即我们在返回数据时传入的处理结果。第三个参数data,即携带者返回数据的Intent。
6、运行程序
附件列表
时间: 2024-10-21 22:35:10