您的位置:首页 > 移动开发 > Android开发

Android使用Bundle进行数据传递分析

2011-12-19 10:49 585 查看
Android使用Intent.putSerializable()进行数据传递,或者使用Bundle进行数据传递,实质上都是进行的Serializable数据的操作,说白了都是传递的原数据的一份拷贝,因此通过对象的传递来控制Android应用是不现实的

见下面的代码

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 com.feng.androidbundle.activity.GetBundleActivity;
import com.feng.androidbundle.bean.DataBean;

public class AndroidbundleActivity extends Activity {
/** Called when the activity is first created. */
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);

// 定义一个Bundle按键
Button gotoBundle = (Button)findViewById(R.id.btnBundle);
// 设置监听事件
gotoBundle.setOnClickListener(new View.OnClickListener(){

@Override
public void onClick(View v) {
Intent intent = new Intent();
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
intent.setClass(getApplicationContext(), GetBundleActivity.class);

DataBean temp = new DataBean();
temp.setID(1);
temp.setName("张三");
temp.setAddress("xx市xx路xx号");
temp.setMoblie("159xxxxxxxx");

Log.i("AndroidbundleActivity", "新建时候的地址" + temp);

Bundle bundle = new Bundle();
bundle.putSerializable("UserInfo", temp);

// 设置intent
intent.putExtras(bundle);

// 发送Activity
getApplicationContext().startActivity(intent);
}

});
}
}在另外一个Activity中将数据取出来
import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.util.Log;

import com.feng.androidbundle.R;
import com.feng.androidbundle.bean.DataBean;

public class GetBundleActivity extends Activity {

@Override
public void onCreate(Bundle savedInstanceState) {
// 初始化BundleActivity
super.onCreate(savedInstanceState);
setContentView(R.layout.bundle);

// 获取意图
Intent intent = getIntent();
Bundle bundle = intent.getExtras();

// 获取对象
DataBean temp = (DataBean) bundle.get("UserInfo");
Log.i("GetBundleActivity", "收到的地址" + temp);
}
}
日志的打印结果
12-19 02:42:49.356: I/AndroidbundleActivity(230): 新建时候的地址com.feng.androidbundle.bean.DataBean@44c24968

12-19 02:42:49.417: I/GetBundleActivity(230): 收到的地址com.feng.androidbundle.bean.DataBean@44c33528

由上面的日志可以看出,使用Bundle进行数据的传递,实质上是拷贝的传递
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  android button import class c
相关文章推荐