今天发现自己连Bundle类都没有搞清楚,于是花时间研究了一下。
依据google官方的文档()
Bundle类是一个key-value对,“A mapping from String values to various Parcelable types.”
类继承关系:
java.lang.Object android.os.Bundle Bundle类是一个final类: public final class Bundle extends Objectimplements Parcelable Cloneable
两个activity之间的通讯能够通过bundle类来实现,做法就是:
(1)新建一个bundle类
Bundle mBundle = new Bundle();(2)bundle类中增加数据(key -value的形式,还有一个activity里面取数据的时候,就要用到key,找出相应的value)
mBundle.putString("Data", "data from TestBundle");(3)新建一个intent对象,并将该bundle增加这个intent对象
Intent intent = new Intent(); intent.setClass(TestBundle.this, Target.class); intent.putExtras(mBundle);完整代码例如以下:
android mainfest.xml例如以下:
两个类例如以下:intent从TestBundle类发起,到Target类。
类1:TestBundle类:
import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class TestBundle extends Activity { private Button button1; private OnClickListener cl; public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); button1 = (Button) findViewById(R.id.button1); cl = new OnClickListener(){ @Override public void onClick(View arg0) { // TODO Auto-generated method stub Intent intent = new Intent(); intent.setClass(TestBundle.this, Target.class); Bundle mBundle = new Bundle(); mBundle.putString("Data", "data from TestBundle");//压入数据 intent.putExtras(mBundle); startActivity(intent); } }; button1.setOnClickListener(cl); }}类2: Target
import android.app.Activity; import android.os.Bundle; public class Target extends Activity{ public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.target); Bundle bundle = getIntent().getExtras(); //得到传过来的bundle String data = bundle.getString("Data");//读出数据 setTitle(data); } }布局文件:
main.xml
target.xml
String.xml
结果:Hello World, TestBundle! 測试Bundle使用方法 点击跳转 来到target activity
跳转结果: