• Activity学习(五)——Bundle机制


            上一篇文章我简单介绍了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); } }
  • 相关阅读:
    IfcExternalReference
    IOException
    IfcExternalInformation
    IfcConnectionGeometry
    netty系列之:netty初探
    netty系列之:Event、Handler和Pipeline
    netty系列之:netty中的Channel详解
    防踩坑日记(一)(ES)elasticsearch中的对象QueryBuilder同时使用should和must查询不成功
    netty系列之:netty中的ByteBuf详解
    netty系列之:netty架构概述
  • 原文地址:https://www.cnblogs.com/sage-blog/p/4047907.html
Copyright © 2020-2023  润新知