Как отправить объект из импортированного пакета в другой Activty - PullRequest
0 голосов
/ 05 апреля 2019

Я выполнил действие (A), которое восстанавливает List<Event> из API Календаря Google в AsyncTask, а затем отправляет его из (A) в (B). Список не пустой при помещении его в пакет:

bundle.putSerializable(KEY_EVENTS_LIST, (Serializable) items);

но это ноль, когда я возвращаю его в (B)

   Bundle b = getIntent().getExtras();
   eventList = (List<Event>) b.getSerializable(MainActivity.KEY_EVENTS_LIST);

Я не знаю, каким другим способом я мог бы отправить его из (A) в (B) или если бы я мог отправить Список напрямую в B из AsyncTask.

Ответы [ 3 ]

1 голос
/ 05 апреля 2019

Вы можете отправить сериализованный список массивов (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");

чтобы получить список из намерений

0 голосов
/ 05 апреля 2019

Если вы хотите сохранить список в фоновом режиме при отправке его на другой вид деятельности, вы можете использовать для этого 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);
0 голосов
/ 05 апреля 2019

WorkAround, который вы можете сделать для решения этой задачи, создает класс Event в вашем проекте со всеми атрибутами класса Event (другой пакет) и делает ваш класс Event паракалибельным.

Перед настройкой списка для связывания преобразуйте его в свой список и передайте этот список.

Это не очень хорошее решение, но, насколько мне известно, оно будет работать идеально. Надеюсь, что это поможет вам.

...