2016-08-06 5 views
0

Я создаю несколько ArrayLists во время одного из моих действий. Когда я покидаю деятельность и возвращаюсь к ней, они появляются как нулевые. Из некоторых исследований SharedPreferences - это способ преодолеть это. Как мне это сделать? мне нужно сохранить его как HashMap? это SharedPreferences собственный метод или я делаю это в рамках другого конкретного метода?Сохранение ArrayList <Uri> в SharedPreferences

+1

Прежде чем пытаться его использовать, вы должны проверить, является ли 'tempSet'' null. То же самое касается 'temp2Set'. Кроме того, похоже, что оба списка имеют одинаковое содержимое. Есть ли причина, по которой вы это делаете? –

+0

@ Code-Apprentice, вот что я в итоге сделал. Этот код просто служил примером, близким к моему коду, и поэтому некоторые из них являются излишними. Я отправлю свое решение. – rafvasq

+1

Пожалуйста, не изменяйте свой вопрос таким образом, чтобы он аннулировал существующие ответы. Вместо этого создайте новый вопрос. – Matt

ответ

1

Здесь, как вы можете использовать Общие настройки записи:

SharedPreferences sp = getActivity().getPreferences(Context.MODE_PRIVATE); 
    //if your codes in your activity class, you dont need getActivity so you should use this 
    //getPreferences(Context.MODE_PRIVATE); 
    SharedPreferences.Editor editor = sp.edit(); 
    editor.putInt("your_string_key", yourValue); 
    editor.commit(); 

Здесь, как вы можете использовать Shared Preferences следующим образом:

SharedPreferences sp = getActivity().getPreferences(Context.MODE_PRIVATE); 
//same here. If your codes in your activity don't write "getActivity." part 
int yourSavedValue = sp.getInt("your_string_key", defaultValue); 
//defaultValue mean if there is no value with that key, it will return defaultValue. 

Вы можете прочитать и узнать больше из here

обновленный вопрос обновленный ответ:

Как вы можете видеть мой ответ, существует значение по умолчанию.

// Restore preferences 
    SharedPreferences settings = getSharedPreferences(PREF_FILE, Context.MODE_PRIVATE); 
    Set<String> tempSet = settings.getStringSet(FIRST_LIST, ""); 
    Set<String> temp2Set = settings.getStringSet(SECOND_LIST, ""); 
    //if it is first time it will return null. So your app going crash. To avoid that make a default value. Like this. 
    for (String str : tempSet) 
     firstList.add(Uri.parse(str)); 
    for (String str : temp2Set) 
     secondList.add(Uri.parse(str)); 
+0

Спасибо Эрен. Я обновил свой вопрос/код. Пожалуйста, посмотрите – rafvasq

+0

Я также обновил свой ответ. Если это решит вашу проблему, пожалуйста, примите этот ответ. –

+0

Единственное различие, которое я могу сказать, это '' "' вместо 'null'. Как это делает значение по умолчанию? – rafvasq

1

У вас есть по крайней мере три варианта:

  1. Используйте SharedPreferences объект как вы предлагаете в вашем вопросе.

  2. Используйте базу данных SQLite.

  3. Используйте файл с вашим собственным форматом.

Для ознакомления с каждым из этих вариантов читайте Storage Options.

+1

Одна вещь, которую я хотел бы рекомендовать в дополнение к этому, очень хорош для использования класса, который использует SharedPreferences, и его очень легко использовать: https://github.com/kcochibili/TinyDB--Android-Shared-Preferences- Turbo, вы можете делать такие вещи, как 'tinydb.putListObject (« list », новый ArrayList ());' – px06

+0

Спасибо, что назовите меня во вступлении. Я думаю, что SharedPreferences - это способ пойти за мной. Все еще не уверен, как передать мои списки URI и называть их, хотя, как мой первоначальный вопрос предлагает – rafvasq

+0

@ImagineThat После того, как вы прочитали документацию для 'SharedPreferences' и попробуете несколько вещей, не стесняйтесь возвращаться с большим количеством вопросов, более конкретным, тем лучше. –

Смежные вопросы