Android Studio — Общее представление не может быть сохранено в новом действии

#java #android #android-studio #android-activity #sharedpreferences

Вопрос:

Как следует из вопроса, общие предпочтения не могут быть сохранены в новом действии

 Set<String> temp = getSharedPreferences("pref", MODE_PRIVATE).getStringSet("attempt", null);
temp.add("one item");
SharedPreferences editor = getSharedPreferences("pref", MODE_PRIVATE);
editor.edit().putStringSet("attempt", temp).commit();
 

этот код отлично работает с основным видом деятельности. Однако это не сработало, когда я попытался поместить этот код в другое действие.

отредактированное предпочтение можно просмотреть после этого кода, даже после destroy(); метода нового действия. Однако он обновляется до сохраненной ссылки только с добавленным ранее элементом в основном действии.

Я искал полчаса, но нашел только вопрос «Не удается сохранить предпочтение» вместо «Не удается сохранить предпочтение только в новом действии«.

Мне интересно, есть ли какая-либо ошибка в моем коде, любая помощь будет признательна.

Ответ №1:

Чтобы сделать ваши ссылки глобальными, я предлагаю сделать SharedPrefs.java класс, чтобы сохранить ваши SharedPreferences , как это:

 public class SharedPrefs {

public static SharedPreferences prefs(Context context){
    return PreferenceManager.getDefaultSharedPreferences(context);
}

//Set your preference
public static void setMyPreference(Context context, String text) {
    prefs(context).edit().putString("MyPreference", text).apply();
}

//Get your preference
public static String getMyPreference(Context context) {
    return prefs(context).getString("MyPreference", "DefaultText");
}
 

И с помощью следующего кода вы можете сохранить данные из вашего Activity as a SharedPreference в свой SharedPrefs.java класс:

 //To save preferences in SharedPrefs
                String myString = "Hello world";
                SharedPrefs.setMyPreference(getContext(),myString);
 

Или получить его от SharedPrefs.java вашего Activity :

 //To get preferences from SharedPrefs
                String getMyPreference = SharedPrefs.getCustomString(getContext());
                System.out.println(getCustomString);
                //Result = Hello world