本文共 2207 字,大约阅读时间需要 7 分钟。
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”. 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/