我进行了一个活动(A),该活动从AsyncTask中的Google Calendar API中恢复hidden_states[gen_data.current_idx]
,然后将其从(A)发送到(B)。将其放入捆绑包时,该列表并不为空:
List<Event>
但是当我在(B)中恢复它时它为空
bundle.putSerializable(KEY_EVENTS_LIST, (Serializable) items);
我不知道我可以通过哪种其他方式将其从(A)发送到(B),或者我是否可以将列表从AsyncTask直接发送到B。
答案 0 :(得分:1)
您可以使用意图将序列化的数组列表(ArrayList)从活动A 发送到活动B
Intent intent = new Intent(context, B.class);
intent.putExtra("list", serializedArrayListObject);
activity.startActivity(intent);
在活动B 中,在 onCreate 方法中
ArrayList<Event> list=getIntent().getSerializableExtra("list");
从意图中获取列表
答案 1 :(得分:0)
您可以执行的WorkAround解决方案在您的项目中创建一个Event
(另一个包)类的所有属性的Event
类,并使Event类可设置。
在将列表设置为捆绑之前,将其转换为列表并传递此列表。
这不是一个好的解决方案,但据我所知它会完美运行。 希望这会帮助你。
答案 2 :(得分:0)
如果要将列表发送到其他活动时将其保存在后台,则可以使用sharedPreferences,如下所示:-
1)您不能将arrayList直接保存在SharedPreferences中,因此需要首先通过以下方式将其转换为集合:-
Set<String> set = new HashSet<String>();
set.addAll(Your_ArrayList);
2)使用sharedPreferences保存它:-
SharedPreferences.Editor editor = getSharedPreferences(MY_PREF_STRING, MODE_PRIVATE).edit();
editor.putStringSet("Key", set);
editor.apply();
其中MY_PREF_STRING
全局声明为public static final String MY_PREF_STRING = "MY_PREF";
使用
进行检索1)在要检索它的另一个活动中,只需粘贴以下给出的代码:-
SharedPreferences preferences = getSharedPreferences(MY_PREF, MODE_PRIVATE);
Set<String> set2 = new HashSet<String>();
set2 = preferences.getStringSet("Key", Collections.singleton("0"));
2)您可以使用以下方法再次将其转换为arrayList:-
ArrayList<String> array = new ArrayList<String>();
array.addAll(set2);