zoukankan      html  css  js  c++  java
  • 安卓数据包的传递 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")));//把数据包的数据展现出来
        }
    }
  • 相关阅读:
    用优先级队列实现先进先出队列;
    c#入门经典(第三版) 练习6.8(5)
    请给出一个时间为O(nlgk)、用来将k个已排序链表的算法。此处n为所有输入链表中元素的总数。
    计数排序
    Heap_delete(A,i)操作将结点i中的想从堆A中删去。对含n个元素的最大堆,请给出时间为O(lgn)的HEAPDELETE的实现。
    堆排序
    请给出一个算法,使之对于给定的介于0到k之间的n个整数进行预处理,并能在O(1)时间内,回答出输入的整数中有多少个落在区间[a..b]内,你给出的算法上预处理时间应是O(n+k)。
    sql存储过程传多个id查询,使用in
    SQL使用语句修改列及表名
    泛型约束使用?有些不知道叫什么好!
  • 原文地址:https://www.cnblogs.com/menglihuakai/p/5765713.html
Copyright © 2011-2022 走看看