Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1082172
  • 博文数量: 226
  • 博客积分: 10000
  • 博客等级: 上将
  • 技术积分: 2504
  • 用 户 组: 普通用户
  • 注册时间: 2006-06-21 14:12
文章分类

全部博文(226)

文章存档

2011年(1)

2010年(2)

2009年(68)

2008年(4)

2007年(27)

2006年(124)

我的朋友

分类: LINUX

2009-06-14 17:38:28


Activity中调用另一个Activity时,需要调用startActivity(Intent i), 若需要在调用另外一个Activity的同时传递数据,那么就需要利用android.os.Bundle对象封装数据的能力,将欲传递的数据或参数,通过Bundle来传递不同Intent之间的数据。Bundle对象针对了不同的数据类型提供了许多的方法,例如,传递String类型的数据,使用的方法为Bundle.putString(stringName,stringValue)

而要传递Double类型的数据,使用的方法为Bundle.putDouble(doubleName,doubleValue),如下:bundle.putDouble("height", heightNum);

 

下面这一段代码是打包数据并传递:

Bundle bundle = new Bundle();
bundle.putString("name", nameStr);
bundle.putDouble("height", heightNum);
intent.putExtras(bundle);
startActivity(intent);


Activity2要如何接收来自Activity1传递来的数据呢?试想,在Activity1是以Bundle封装对象,自然在Activity2亦是以Bundle的方式解开封装的数据;程序中以getIntent().getExtras() 方法取得随着Bundle对象传递过来的数据。若要由Bundle对象中取出数据,则使用Bundle.getString(stringName)Bundle.getDouble(doubleName) 等相对应的方法即可。

 

下面这段代码用来解析传递过来的数据:

Bundle bundle = this.getIntent().getExtras();
String name = bundle.getString("name");
Double height = bundle.getDouble("height");


最后,还是用一个小程序来演示一下:

首先是activity 1:

package com.zx.test;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.Button;
import android.widget.EditText;

public class BundleTest extends Activity {
    EditText nameWidget, heightWidget;
    Button btnSubmit;
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        
        //get name and height

        nameWidget = (EditText)findViewById(R.id.nameText);
        heightWidget = (EditText)findViewById(R.id.heightText);
        btnSubmit = (Button)findViewById(R.id.submit);
        //btnSubmit.setOnClickListener(new Button.OnClickListener()

        btnSubmit.setOnClickListener(new Button.OnClickListener()
        {
            @Override
            public void onClick(View v) {
                // TODO Auto-generated method stub

                String nameStr = null;
     Double heightNum = 0.0;
    
     nameStr = nameWidget.getText().toString();
     heightNum = Double.parseDouble(heightWidget.getText().toString());
    
     Log.i("zx", "name is " + nameStr + " height=" + heightNum);
     Intent intent = new Intent();
     intent.setClass(BundleTest.this, ResultPage.class);
    
     Bundle bundle = new Bundle();
     bundle.putString("name", nameStr);
     bundle.putDouble("height", heightNum);
    
     intent.putExtras(bundle);
     startActivity(intent);
            }
        });
        
    }
}


接下来是第二个activity的代码:

package com.zx.test;

import android.app.Activity;
import android.os.Bundle;
import android.widget.TextView;

public class ResultPage extends Activity {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.result);
        
        Bundle bundle = this.getIntent().getExtras();
        String name = bundle.getString("name");
        Double height = bundle.getDouble("height");
        
        TextView tv = (TextView)findViewById(R.id.TextView01);
        tv.setText("your name is " + name + ", your height is "+ height.toString());
        
    }
}

阅读(19683) | 评论(2) | 转发(1) |
给主人留下些什么吧!~~

chinaunix网友2010-06-04 11:02:28

很清楚,代码也不冗长

chinaunix网友2010-02-01 22:43:00

顶,简单明了