安卓数据包的传递 Bundle
方法一:
1、新建一个project,建立两个Activity,分别为MainActivity和Main2Activity
2、MainActivity创建一个按钮,并设置其文本为:启动下一个Activity。在Main2Activity里创建一个Textview,并设置好其id
3、在MainActivity里实现如下代码:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建并实现一个监听器 findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //监听器要做的事情 Intent i=new Intent(MainActivity.this,Main2Activity.class);//MainActivity和Main2Ativity连接起来 允许他们之间传递数据 // i.putExtra("data","nihao");//用putExtra把内容传送到另一个Activity,名字是data,值是nihao Bundle b=new Bundle(); b.putString("name","xiaohong"); b.putInt("age",2); i.putExtras(b);//传递Bundle打包的数据 startActivity(i);//启动第二个activity并把i传递过去 } }); } }
4、在Main2Activity里实现如下代码:
public class Main2Activity extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Intent i=getIntent();//因为Mian2Activity是通过intend来启动的,所以通过getIntend来获取与这个Activity相关的数据 Bundle data=i.getExtras();//获取数据包 tv=(TextView) findViewById(R.id.tv22); // tv.setText(i.getStringExtra("data"));//因为MainActivity里通过putExtra传递时名字是data,值是nihao tv.setText(String.format("name=%s,age=%d",data.getString("name"),data.getInt("age")));//把数据包的数据展现出来 } }
5、运行效果如下:
在第一张Activity里有一个Button,
点击第一张的Button,另一个Activity启动,并出现传送的数据包内容
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
方法二:
在MainActivity里实现如下代码:
public class MainActivity extends AppCompatActivity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); //创建并实现一个监听器 findViewById(R.id.button1).setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { //监听器要做的事情 Intent i=new Intent(MainActivity.this,Main2Activity.class);//MainActivity和Main2Ativity连接起来 允许他们之间传递数据 // i.putExtra("data","nihao");//用putExtra把内容传送到另一个Activity,名字是data,值是nihao Bundle b=new Bundle(); b.putString("name","xiaohong"); b.putInt("age",2); // i.putExtras(b);//传递Bundle打包的数据 //方法一 i.putExtra("data",b);//方法二:选择putExtra中的一个可以直接传递Bundle的函数 startActivity(i);//启动第二个activity并把i传递过去 } }); } }
注:putExtra中有一个可以直接传递Bundle的函数,下图:
在Main2Activity里实现如下代码:
public class Main2Activity extends AppCompatActivity { private TextView tv; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main2); Intent i=getIntent();//因为Mian2Activity是通过intend来启动的,所以通过getIntend来获取与这个Activity相关的数据 //Bundle data=i.getExtras();//方法一:获取数据包 Bundle data=i.getBundleExtra("data");//方法二 tv=(TextView) findViewById(R.id.tv22); // tv.setText(i.getStringExtra("data"));//因为MainActivity里通过putExtra传递时名字是data,值是nihao tv.setText(String.format("name=%s,age=%d",data.getString("name"),data.getInt("age")));//把数据包的数据展现出来 } }