如何将对象从导入的包发送到另一个活动

时间:2019-04-05 11:40:29

标签: java android android-intent google-api

我进行了一个活动(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。

3 个答案:

答案 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);