博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Android Activity 之间传递数据
阅读量:4055 次
发布时间:2019-05-25

本文共 2207 字,大约阅读时间需要 7 分钟。

1. 简单的数据传递

假设 Activity1 启动 Activity2 的时候给其传递数据

Activity1.java

Intent intent = new Intent(Activity1.this, Activity2.class);intent.putExtra("key1", 123L);      // long intent.putExtra("key2", "Hello");   // StringstartActivity(intent);

Activity2.java

protected void onCreate(Bundle savedInstanceState) {    super.onCreate(savedInstanceState);    setContentView(R.layout.activity_xxxx);    ...    String a = getIntent().getStringExtra("key1");    long  b = getIntent().getLongExtra("key2", 0);    ...}

其他常用数据类型

传递数据用 putExtra (String name, TYPE value), 接收数据用相应类型的 get...Extra()

putExtra 数据类型 get…Extra 方法
int getIntExtra(String, int)
int[] getIntArrayExtra(String)
short getShortExtra(String, short)
short[] getShortArrayExtra(String)
byte getByteExtra(String, byte)
byte[] getByteArrayExtra(String)
boolean getBooleanExtra(String, boolean)
boolean[] getBooleanArrayExtra(String)
long[] getLongArrayExtra(String)
double[]) getDoubleArrayExtra(String)
char getCharExtra(String, char)
char[] getCharArrayExtra(String)
String getStringExtra(String)
String[] getStringArrayExtra (String)
long getLongExtra(String, long)
long[] getLongArrayExtra(String)
float getFloatExtra (String, float)
float[] getFloatArrayExtra(String)
double getDoubleExtra(String, double)
double[] getDoubleArrayExtra(String)
Bundle getBundleExtra(String)

需要注意的是:

- 有的 get...Extra() 有两个参数,比如 getIntExtra(String, int defaultValue), 如果没有接收到相应的数据,则返回第二个参数指定的默认值。其他一个参数的 get…Extra(String),如果没收到数据,返回默认值 null。
- 虽然String关键字可以随便起个简单的名字,但是Android API要求,名字必须使用包名作为前缀。API: The name must include a package prefix, for example the app com.android.contacts would use names like “com.android.contacts.ShowAll”.

2. 使用 Bundle 传递对象

Bundle类用作携带数据,它类似于Map,以 key-value 的形式把多种数据存放一个包裹里面传递,它提供了各种常用类型的putXxx()/getXxx()方法。

比较常用的是下面这种方法,还是假设 Activity1 启动 Activity2 的时候给其传递数据。

Activity1.java

Intent intent = new Intent(Activity1.this, Activity2.class);Bundle bundle = new Bundle();bundle.putString("key1", "Hello");intent.putExtras(bundle);startActivity(intent);

Activity2.java

Bundle bundle = getIntent().getExtras();String a = bundle.getString("key1");

当然要是有多个Bundle的话,也可以把Bundle当做普通数据类型像上述的一样传递。

putExtra (String name, Bundle value)getBundleExtra (String name)

转载地址:http://bamci.baihongyu.com/

你可能感兴趣的文章
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Linked List Cycle (python)
查看>>
【leetcode】Candy(python)
查看>>
【leetcode】Clone Graph(python)
查看>>
【leetcode】Sum Root to leaf Numbers
查看>>
【leetcode】Pascal's Triangle II (python)
查看>>
java自定义容器排序的两种方法
查看>>
如何成为编程高手
查看>>
本科生的编程水平到底有多高
查看>>
AngularJS2中最基本的文件说明
查看>>
从头开始学习jsp(2)——jsp的基本语法
查看>>
使用与或运算完成两个整数的相加
查看>>
备忘:java中的递归
查看>>
DIV/CSS:一个贴在左上角的标签
查看>>
Solr及Spring-Data-Solr入门学习
查看>>
Vue组件
查看>>
python_time模块
查看>>
python_configparser(解析ini)
查看>>
selenium学习资料
查看>>
<转>文档视图指针互获
查看>>