首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >如何在Android中获取首选项?

如何在Android中获取首选项?
EN

Stack Overflow用户
提问于 2018-09-26 05:47:01
回答 1查看 727关注 0票数 0

我不明白偏好是如何起作用的。

我有一个preferences活动和一个字段:

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

在preference活动中,我使用以下代码对其进行编辑:

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

但得到空字符串。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2018-09-26 05:49:48

更新:使用此命令:

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", "");
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/52507112

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档