Android--Activity之间传输数据

33 篇文章 0 订阅
  • Intent 方法传输简单数据
  • Bundle 方法传输复杂数据
  • 多个Activity之间传递值对象
  • 获取Activity传回的数据

    Intent 方法传输简单的数据

    实际上Intent方法是一个Activity开启另一个Activity的常用方法。


      通过Intent的方法传输一个简单的数据并打开一个Activity。
    1.在主Activity中设置一个按钮,并初始化。

 private Button openBtn;//声明按钮
 ...
 openBtn = (Button) findViewById(R.id.openBtn);//初始化按钮
 ...

2.再在按钮点击处理中进行

openBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this,SecondActivity.class);//实例并初始化一个Intent对象,参数为,本Activity和需要打开的哪一个Activity类名字
                i.putExtra("data","I send you a message!"); //设置这个信息的名字和需要传递的值,信息的名字就是在另一个Activity取出的的辨识名字

                //i.putExtra(String name,String value)

                startActivity(i);

            }
        });

3.在已经打开的另一个Activity中取出传输的数据

private TextView tv;//声明一个按钮

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_second);

        Intent i = getIntent();//声明一个Intent,赋给一个“getIntent()”

        tv = (TextView) findViewById(R.id.tv);
        tv.setText(i.getStringExtra("data"));//Intent的i获得的“getStringExtra()”的名字就是父Activity中“put...”方法中设置的名字

    }

至此已经实现了一个Intent的数据在Activity之间的传输。

另外 Intent i的PutExtra()方法有20多种重载函数,可以传递很多种类型的值。


Bundle方法传输复杂数据

Bundle的方法是在Intent方法的基础上扩展。Bundle只是一个集合进行一些数据上的整合而已,传输还是要靠Intent方法!


主Activity设置Bundle数据源

 private Button openBtn;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        openBtn = (Button) findViewById(R.id.openBtn);

        openBtn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent i = new Intent(MainActivity.this,SecondActivity.class);
                Bundle b = new Bundle();
                b.putString("data","Information of Student!");//字符串类型
                b.putInt("age",22);//整型。。。还有更多的都可以

                i.putExtras(b);//还是要通过Intent的对象进行传递,需要注意

                startActivity(i);

            }
        });

    }

在另一个Activity里面获得Bundle数据

 private TextView tv;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        setContentView(R.layout.activity_second);

        Intent i = getIntent();//获取Bundle的方法
        Bundle data = i.getExtras();//另一个Bundle数据还是要通过Intent对象获得

        tv = (TextView) findViewById(R.id.tv);
        tv.setText(String.format("name = %s,age = %d",data.getString("data"),data.getInt("age")));

    }

通过Intent进行传输正如前面所说的还有很多方法,Bundle打包数据,Intent 对象传输还有很多函数可以用,要看具体的需求,举一反三!


传递值对象


获取Activity传回的数据

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值