Android如何将Map <v,t>放在intent </v,t>中

时间:2014-12-03 06:43:51

标签: android android-intent

我有一个Map对象,我想将其置于启动Service的意图中:

Map<Integer, String> modules = new HashMap<Integer, String>();
Intent downloadServiceIntent = new Intent(context.getApplicationContext(), DownloadService.class);
downloadServiceIntent.putExtra("EXTRA_MODULE", modules);
context.startService(downloadServiceIntent);

我想我可以将Map分成两个数组(int[]String[]),然后将它们置于意图之中。例如:

int[] keys = new int[modules.size()];
String[] values = new String[modules.size()];
int i = 0;
for (Map.Entry<Integer, String> entry : modules.entrySet()) {
    keys[i] = entry.getKey();
    values[i] = entry.getValue();
    i++;
}
downloadServiceIntent.putExtra("EXTRA_KEYS", keys);
downloadServiceIntent.putExtra("EXTRA_VALUES", values);

这是个好主意吗?有没有其他方法可以实现这一目标?

2 个答案:

答案 0 :(得分:6)

您可以将序列化作为额外[1]。例如,HashMap实现了可序列化接口[2]。因此,如果您将变量类型从Map更改为HashMap,则可以将您的地图直接添加为额外内容。

[1] http://developer.android.com/reference/android/content/Intent.html#putExtra(java.lang.String,%20java.io.Serializable) [2] https://docs.oracle.com/javase/7/docs/api/java/util/HashMap.html

答案 1 :(得分:1)

是的,你的想法很好。没有办法将Map放在Intent中。