【发布时间】:2016-07-04 04:14:37
【问题描述】:
我正在尝试为测试应用构建设置页面。在代码中,我使用的是 PreferenceActivity 类。当我从设置页面设置一些设置时,我可以使用以下方法在应用程序的任何位置检索该值。
SharedPreferences SP;
SP = PreferenceManager.getDefaultSharedPreferences(getBaseContext());
String username = SP.getString("username", "bob");
我还可以在代码中的任何位置设置键值。提供上下文后就像下面的方法一样。
SharedPreferences.Editor edit;
edit.putString("username", "bob");
edit.commit();
问题是,当我打开设置页面时,“用户名”字段没有更新为“鲍勃”。我想在设置活动中反映 SharedPreferences 变量的更改值,这是在preferences.xml 上工作的扩展PreferenceActivity。我正在填充如下所示的首选项。
Settings.java
import android.preference.PreferenceActivity;
import android.preference.PreferenceFragment;
import android.os.Bundle;
public class Settings extends PreferenceActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction().replace(android.R.id.content, new MyPreferenceFragment()).commit();
}
public static class MyPreferenceFragment extends PreferenceFragment
{
PrefManager prefManager;
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.preferences);
}
}
}
preference.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<EditTextPreference android:title="Your Name"
android:key="username"
android:summary="Please provide your username">
</EditTextPreference>
</PreferenceScreen>
【问题讨论】:
-
你能把你的代码贴在这里
-
你正在设置
"username"并得到"userName" -
@Sharj 对不起。那是一个错字。
-
如果用户之前保存了一些数据,您想在预填充的edittext中显示更新的值吗?
-
我想在设置页面中反映
username的更改值,只要它在代码中发生更改。 (假设我从代码中随机更改应用程序中的用户名)只想在设置页面中反映它。
标签: android android-preferences android-sharedpreferences