Как получить настройки в Android?

Я не понимаю, как работают предпочтения.

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

<PreferenceScreen xmlns:android = "http://schemas.android.com/apk/res/android">
<EditTextPreference
    android:key = "@string/pr_rest_service_url"
    android:title = "@string/rest_service_url"
    android:summary = "%s"
    android:shouldDisableView = "false"
    android:selectable = "true"
    android:enabled = "true"
    android:defaultValue = "543543543"
    />
</PreferenceScreen>

В действии предпочтений я использую этот код для его редактирования:

public class SettingsActivity extends PreferenceActivity {

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    addPreferencesFromResource(R.xml.preferences);
    String editTextPrefKey = getString(R.string.pr_rest_service_url);
    EditTextPreference restUrlTExtEdit = (EditTextPreference) findPreference(editTextPrefKey);
    restUrlTExtEdit.getEditText().setInputType(InputType.TYPE_CLASS_TEXT);
    restUrlTExtEdit.setSummary(restUrlTExtEdit.getText());

    restUrlTExtEdit.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
        @Override
        public boolean onPreferenceChange(Preference preference, Object newValue) {
            preference.setSummary(newValue.toString());
            return true;
        }
    });

    Preference saveButton = findPreference(getString(R.string.preference_save_button));
    saveButton.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
        @Override
        public boolean onPreferenceClick(Preference preference) {
            finish();
            return true;
        }
    });
}
}

И это работает. Работает нормально.
Теперь я хочу получить преимущество от других частей приложения. Я поместил этот код в MainActivity:

String key = this.getString(R.string.pr_rest_service_url);
SharedPreferences mSharedPreferences = getSharedPreferences(key, Context.MODE_PRIVATE);
String g = mSharedPreferences.getString(key, null);

И получил null. Так как же работать с настройками?
Или я сделал ошибку при запуске и не должен использовать PreferenceActivity в качестве экрана настроек? Или предпочтения, привязанные к деятельности? Итак, как я могу получить

ОБНОВИТЬ

Я пытался

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(getApplicationContext());
String name = sp.getString("myKey", "");

Но получилась пустая строка.

Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
Как вычислять биты и понимать побитовые операторы в Java - объяснение с примерами
В компьютерном программировании биты играют важнейшую роль в представлении и манипулировании данными на двоичном уровне. Побитовые операции...
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Поднятие тревоги для долго выполняющихся методов в Spring Boot
Приходилось ли вам сталкиваться с требованиями, в которых вас могли попросить поднять тревогу или выдать ошибку, когда метод Java занимает больше...
Полный курс Java для разработчиков веб-сайтов и приложений
Полный курс Java для разработчиков веб-сайтов и приложений
Получите сертификат Java Web и Application Developer, используя наш курс.
0
0
680
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Обновлять: Используйте это тогда:

SharedPreferences yourOutputdata =
context.getSharedPreferences("YourKEY", MODE_PRIVATE); // Save as YourKEY in the Activity which you're passing data to this one ...

Из-за этого:

String key = this.getString(R.string.pr_rest_service_url);

Фактически вы получаете строку из файла ресурсов и сохраняете ее в предпочтении, которое, как я считаю, вызывает значение null.

Попробуй это:

Сохранить:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
SharedPreferences.Editor editor = sp.edit();
editor.putString("key","your text-data here");
editor.apply();

И получить:

SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);
String name = sp.getString("key", "");

Это не помогает. name - пустая строка. Я уже зол на это. Couse на моем телефоне getDefaultSharedPreferences() работает, на телефоне моего друга не работает. В Android Emilator это не работает.

Kliver Max 27.09.2018 22:05

Я фактически объяснил, почему он возвращает null. Кроме того, вы ничего не сохранили, чтобы получить SharedPreference, вместо этого вы пытались получить строку ресурса, которая возвращала null. Однако обновил ответ.

ʍѳђઽ૯ท 27.09.2018 22:19

Другие вопросы по теме