Intent(意图)在Android开发中是用于在各个Activity之间传输数据用的。它可传输的数据形式主要有以下几种:
1、简单数据。(使用Bundle即可)
2、数组。
3、List集合。
4、Map<String, Object>。(可以放在一个List集合里传输)
5、对象(对象之类的,可以放在一个List集合里传输)
综上所述,使用List集合还是比较全面的。(下面这个实例中,最主要的就是:List集合中Object类需要实现Serializable接口,如下面代码中的Tb_ItemBean就需要实现Serializable接口。)
首先,第一个界面MainActivity.java的主要代码如下:
package com.deepreality.intentdemo;
import android.content.Intent;
import android.os.Parcelable;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import java.io.Serializable;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
public class MainActivity extends AppCompatActivity {
public List<Tb_ItemBean> tbItemBeanList;
public List<Map<String, Object>> mapList;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//listDataInit();
listDataInit_1();
}
private void listDataInit() {
tbItemBeanList = new ArrayList<>();
for (int i = 0; i < 5; i ++) {
Tb_ItemBean tb_itemBean = new Tb_ItemBean("fileName" + String.valueOf(i + 1), String.valueOf(i + 1));
tbItemBeanList.add(tb_itemBean);
}
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("tbItemBeanList", (Serializable) tbItemBeanList);
intent.putExtras(bundle);
startActivity(intent);
}
private void listDataInit_1() {
mapList = new ArrayList<>();
for (int i = 0; i < 5; i ++) {
Map<String, Object> map = new HashMap<>();
map.put("value" + String.valueOf(i + 1), "第" + String.valueOf(i + 1) + "_1个值");
map.put("value" + String.valueOf(i + 1), "第" + String.valueOf(i + 1) + "_2个值");
mapList.add(map);
}
Intent intent = new Intent(MainActivity.this, SecondActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("tbItemBeanList", (Serializable) mapList);
intent.putExtras(bundle);
startActivity(intent);
}
}
第二个接收数据的界面SecondActivity.java的代码如下:
package com.deepreality.intentdemo;
import android.content.Intent;
import android.os.Bundle;
import android.support.annotation.Nullable;
import android.support.v7.app.AppCompatActivity;
import android.util.Log;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
public class SecondActivity extends AppCompatActivity {
public List<Tb_ItemBean> tbItemBeanList;
public List<Map<String, Object>> mapList;
@Override
protected void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//resultShow_1();
resultShow_2();
}
private void resultShow_1() {
tbItemBeanList = new ArrayList<>();
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
tbItemBeanList = (List<Tb_ItemBean>) bundle.getSerializable("tbItemBeanList");
Log.e("结果", tbItemBeanList.get(1).get_fileName());
}
private void resultShow_2() {
mapList = new ArrayList<>();
Intent intent = getIntent();
Bundle bundle = intent.getExtras();
mapList = (List<Map<String, Object>>) bundle.getSerializable("tbItemBeanList");
Log.e("结果", mapList.get(1).get("value2").toString());
}
@Override
protected void onDestroy() {
super.onDestroy();
}
}
输出结果: