Как получить настройки в Android? - PullRequest
0 голосов
/ 26 сентября 2018

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

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

<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", "");

Но получил пустую строку.

1 Ответ

0 голосов
/ 26 сентября 2018

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

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);

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

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

Сохранить:

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", "");
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...