android Acitivity之间的数据传递

安卓在不同的activity之间进行数据的传递


activity之间的四种传递数据的方法

  1. 使用intent 意图
  2. 使用全局变量
  3. 使用静态变量
  4. 使用剪切板

1、Intent意图传递数据

利用putExtra方法将数据以键值对的方式进行传递

传递

button= (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,OtherAcitivity.class);
                intent.putExtra("name","hello");
                startActivity(intent);
            }
        });

利用getStringExtra 取出
接收

Intent intent=getIntent();
String name = intent.getStringExtra("name");

2、全局变量传递数据

首先写一个存放数据的类,继承Application

package com.example.hifn123p.java;

import android.app.Application;

public class MyApp extends Application {
    public String name;

    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }
}

清单文件中进行声明 在application结点下 声明name

<application
        android:name=".MyApp"
         >

传递 定义一个全局变量myApp

button=(Button)findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                myApp= (MyApp) getApplication();
                myApp.setName("hello");
                Intent intent=new Intent(MainActivity.this,OtherAcitivity.class);
                startActivity(intent);
            }
        }); 

接收 定义一个全局变量myApp

myApp= (MyApp) getApplication();
        textView.setText(myApp.getName());

3、静态变量传递数据

首先在OtherActivity中定义一个全局变量

public static String hello;

传递

button= (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                Intent intent=new Intent(MainActivity.this,OtherAcitivity.class);
                OtherAcitivity.jack="hello";
                startActivity(intent);
            }
        });

4、剪切板传递数据

传递 将数据放到剪切板中

button= (Button) findViewById(R.id.button);
        button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                ClipboardManager cliboardManager =
                        (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
                String name="hello";
                cliboardManager.setText(name);
                Intent intent=new Intent(MainActivity.this,OtherAcitivity.class);
                startActivity(intent);
            }
        });

接收

ClipboardManager clipboardManager=
                (ClipboardManager) getSystemService(Context.CLIPBOARD_SERVICE);
        String edString = clipboardManager.getText().toString();

多个Activity之间 例如 A ,B ,C;

现在我要把值通过A经过B传给C
如果用Intent的话 A-B 再在B中都取出来 然后在把值传到C

Bundle
如果在A中用了 Bundle 的话 我把Bundle传给B 在B中再转传到C C就可以直接去了
这样的话 还有一个好处 就是在B中 还可以给Bundle对象添加新的 key - value 同样可以在C中取出来


评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值