这一篇应该算初级知识,activity如何进行值传递和回传值这应该是最基本的了,从一个activity到另一个activity需要用到intent这个类是大家都知道的,而后activity传值是
开发
中必不可少的基础知识。
一、activity值传递
用过intent的put方法(putExtra)将值从一个activity传到另一个activity中,另一个activity就可以通过get方法获取值。
就这么简单,另外会提到一个Bundle类,它通过键值对封装数据只用,这里可以把一些数据通过Bundle用put方法封装进去,再到另一个activity中get方法获取。具体参考代码如下:
/*
* www.tongleer.com
* FirstActivty
*/
button=(Button)findViewById(R.id.nextButton);
button.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(FirstActivty.this,NextActivity.class);
intent.putExtra("name", "张三");
Bundle bundle=new Bundle();
bundle.putInt("age", 24);
intent.putExtra("bundle", bundle);
startActivity(intent);
}
});
/* www.tongleer.com
* NextActivity
*/
Intent intent=getIntent();
String name=intent.getStringExtra("name");
Bundle bundle=intent.getBundleExtra("bundle");
if(bundle!=null&&name!=null){
int age=bundle.getInt("age");
Log.i(TAG, "--name->"+name);
Log.i(TAG, "--age->"+age);
}
二、activity回传值
activity回传值跟activity值传递的思想一样,只是用到的startActivityForResult和onActivityResult方法,前者主要用于将值以参数形式从第一个activity传到另一个activity传递过去;后者主要用于第一个activity接收第二个activity返回的值,其中用到setResult方法,在intent回第一个activity时把最终结果以参数形式返回到第一个activity中,然后第一个activity再接收返回值。
其中只有在发送请求编码requestCode和返回值编码resultCode相等的时候才能确定对方的关系,才能进行值传递和回传值。具体参考代码如下:
/* www.tongleer.com
* FirstActivity
*/
editText1=(EditText)findViewById(R.id.editText1);
editText2=(EditText)findViewById(R.id.editText2);
editText3=(EditText)findViewById(R.id.editText3);
go=(Button)findViewById(R.id.go);
go.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent=new Intent(FirstActivity.this,NextActivity.class);
String et1=editText1.getText().toString().trim();
String et2=editText2.getText().toString().trim();
intent.putExtra("message",et1+"+"+et2+"="+"?");
startActivityForResult(intent, 1);
}
});
/* www.tongleer.com
* NextActivty
*/
one=(TextView)findViewById(R.id.one);
Intent intent2=getIntent();
String message=intent2.getStringExtra("message");
one.setText(message);
value=(Button)findViewById(R.id.value);
result=(EditText)findViewById(R.id.result);
value.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
String res=result.getText().toString().trim();
Intent intent=new Intent();
intent.putExtra("result", res);
setResult(2,intent);
finish();
}
});
/* www.tongleer.com
* onActivityResult方法用于返回子窗口返回的所有结果
* FirstActivity
*/
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
if(requestCode==1&&resultCode==2){
String result=data.getStringExtra("result");
editText3.setText(result);
}
}
到这里,就是你就可以掌握activity如何进行值传递和回传值了,这么一看是不是很简单,只要把思路理清,就可以结合实际开发情况,运用到项目中去了。