上一篇文章我简单介绍了Activity之间简单切换,很简单,这一篇文章我们继续聊Android中程序页面互相跳转的Activity,不过这一次我们在Activity跳转时,携带一些简单的数据,然后在新的Activity中将携带的数据展示出来。
不过请谨记我们这边暂时先携带一些简单的数据(简单的数据类型包括String),而不是那些大额的对象实例 ,在Activity中携带实例我们以后再论。
在Intent中我们使用putExtras方法携带数据,在例子中我们就介绍将数据存放到Bundle中,然后putExtras带上Bundle参数,代码如下:
Java代码
public class ActivityA extends Activity { private Button button; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_for_a); // 设置当前的的Activity的标题,以作为标记使用 setTitle("这是Activity A"); // 获取布局文件中的button button = (Button) findViewById(R.id.a_button); // 给button设置文字 button.setText("A跳B"); // button添加监听事件 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // 调用AtoB AtoB(); } }); } public void AtoB() { // intent很重要,是两个Activity之间的纽带 Intent in = new Intent(); // 使用intent连接两个Activity,一个参数是当前的上下文(context),还有一个是要切换到的Activity主类 in.setClass(this, ActivityB.class); //需要传出去的数据字串 String hello = "我是来自Bundle中的数据"; //我们把要传出去的字串放到bundle中 Bundle extras = new Bundle(); //第一个参数是key值,取的通过这个key就可以拿到这个bundle中的数据了 extras.putString("intent_bundle", hello); //将bundle放进Intent中 in.putExtras(extras); // 跳转 startActivity(in); } } 我们再在另外一个ActivityB中添加展示数据的代码,如下: Java代码 public class ActivityB extends Activity { private Button button; private TextView textView; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.layout_for_b); // 设置当前的的Activity的标题,以作为标记使用 setTitle("这是Activity B"); // 获取布局文件中的button和textView button = (Button) findViewById(R.id.b_button); textView = (TextView) findViewById(R.id.show_tv); String show = getData(); //让textView显示取出来的数据 if (show != null){ textView.setText(show); } else { textView.setText("nothing"); } // 给button设置文字 button.setText("B跳A"); // button添加监听事件 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub // 调用AtoB BtoA(); } }); } public String getData(){ Bundle extra = new Bundle(); extra = getIntent().getExtras(); if (extra != null){ return extra.getString("intent_bundle"); }else { return null; } }
public void BtoA() { // intent很重要,是两个Activity之间的纽带 Intent in = new Intent(); // 使用intent连接两个Activity,一个参数是当前的上下文(context),还有一个是要切换到的Activity主类 in.setClass(this, ActivityA.class); // 跳转 startActivity(in); } }