Как работают общие настройки в Android? - PullRequest
0 голосов
/ 06 марта 2019

Я сталкивался с вопросом об Android следующим образом. Результат меня смущает.

SharedPreferences pref = getApplicationContext().getSharedPreferences("MyPref", 0); // 0 - for private mode
        SharedPreferences.Editor editor = pref.edit();
        editor.putString("1", "2"); // Storing string
        editor.putString("3", "4 "); // Storing string
        editor.commit();
        System.out.println("pref.getString() = " + pref.getString("2","3"));

Ответ: pref.getString () = 3.

Как общее предпочтение печатает это значение? Может кто-нибудь объяснить это?

Ответы [ 4 ]

2 голосов
/ 06 марта 2019

Первый аргумент get...() - это ключ общих настроек. Второй аргумент - это значение по умолчанию, которое возвращается, если по этому ключу нет значения.

При условии, что никакой другой код не поместил значение с ключом "2" в этот файл общих настроек, при вызове pref.getString("2","3").

возвращается значение по умолчанию "3".
1 голос
/ 06 марта 2019

Объект SharedPreference ничего не печатает.

В вашем случае sharedPreference хранит данные в парах ключ-значение в XML-файле с именем MyPref:

getApplicationContext().getSharedPreferences("MyPref", 0);

Вы вводите значение, которое выхотите сохранить, вызвав метод putXX для объекта-редактора, полученного из объекта pref, вызвав для него edit ():

SharedPreferences.Editor editor = pref.edit();

** putXX означает put [некие примитивные данные], такие какint float String.

Когда вы вызываете putString, вы задаете ключ в качестве первого параметра и значение String в этом случае в качестве второго параметра:

editor.putString("1", "2"); // Storing string
editor.putInt("myInt", 2); // Storing integer

Метод фиксации записываетданные.

editor.commit();

getString извлекает строковое значение для ключа, заданного в качестве первого параметра, и, если они не являются записями, возвращается значение по умолчанию, которое является вторым параметром в этом случае «3»:

String myValue = pref.getString("2","3")

Печать осуществляется по телефону:

 System.out.println(myValue);
0 голосов
/ 06 марта 2019

У Android есть страница, которая очень чистая. Shared Preferences getString ()

Этот метод имеет два параметра:

key

Имя предпочтения, которое нужно получить.

defValue

Значение, возвращаемое, если этого предпочтения не существует.Это значение может быть ноль .

Так что если у вас есть это в вашем SharedPreferences

editor.putString("1", "2"); // Storing string
editor.putString("3", "4 "); // Storing string

И вы делаете: pref.getString("2","3")

Вы ищете ключ SharedPreferences со значением «2», и если он ничего не найдет, вы получите «3» в качестве значения по умолчанию.

0 голосов
/ 06 марта 2019

editor.putString ("1", "2") - первый аргумент - KEY, второй аргумент - значение.pref.getString ("2", "3") - первый аргумент - KEY, второй аргумент - значение по умолчанию (в случае, если такой ключ отсутствует).

В вашем случае вы поместили две строки- 2 и 4 в ключах 1 и 3 соответственно.Когда вы пытаетесь прочитать строку с ключом 2 - она ​​отсутствует.Таким образом, значение по умолчанию (3) печатается

Ps вы используете ключи, очень похожие на значения - строки, содержащие числа.Просто поставьте больше читаемых клавиш, и все станет яснее.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...