android Acitivity之间的数据传递

来源:互联网 发布:站长工具 域名备案 编辑:程序博客网 时间:2024/05/16 17:17

安卓在不同的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中取出来


0 0
原创粉丝点击