961天 Mr.贰呆

唯一自信的就是自己的人品。
寻求王者玩家一起开黑净化峡谷环境​​

【Android】开发入门:Android如何进行值传递和回传值

发布于 / 706 次围观 / 0 条评论 / Android / 二呆 /

这一篇应该算初级知识,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如何进行值传递和回传值了,这么一看是不是很简单,只要把思路理清,就可以结合实际开发情况,运用到项目中去了。
sitemap
共享域名