好的,所以我发现每个帖子都无法让这个工作,我正在尝试进入我的列表首选项
Settingsbasic.xml
<ListPreference
android:title="themes"
android:summary="Select the option of the list"
android:key="listPref"
android:entries="@array/Themes"
android:entryValues="@array/list"
android:defaultValue="default" />
现在您可以在上面看到这是我的settingsbasic.xml文件中的listpreference。现在我需要知道的是我有2个java文件,我的主要活动。和我的首选项java文件。我需要知道当用户点击其中一个条目时,我可以做什么,喜欢打开一些东西或更改ui,我认为我可以从那里拿走它。我只需要知道代码的方式和位置。在主要的活动或偏好活动中。
这是我的偏好java文件
public class Prefs extends PreferenceActivity {
ListPreference listPref;
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.settingsbasic);
}
protected void onResume() {
super.onResume();
// Registers a callback to be invoked whenever a user changes a preference.
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
protected void onPause() {
super.onPause();
// Unregisters the listener set in onResume().
// It's best practice to unregister listeners when your app isn't using them to cut down on
// unnecessary system overhead. You do this in onPause().
getPreferenceScreen()
.getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
// Sets refreshDisplay to true so that when the user returns to the main
// activity, the display refreshes to reflect the new settings.
WebViewClientDemoActivity.????? = true;
}
}
任何示例代码都会有所帮助,或者添加到我上面的代码中。我只需要一个可以解释这段代码的人。我已经尝试了很多不同的东西,但没有一个可行。
好的,所以使用下面推荐的示例应用程序的方法是我的一些代码。
Main Activity
public class WebViewClientDemoActivity extends Activity {
public static String sPref = null;
public void onStart() {
super.onStart();
// Gets the user's network preference settings
SharedPreferences sharedPrefs = PreferenceManager.getDefaultSharedPreferences(this);
// Retrieves a string value for the preferences. The second parameter
// is the default value to use if a preference value is not found.
sPref = sharedPrefs.getString("listPref", "Default");
}
答案 0 :(得分:1)
这是我使用PreferenceActivity的方式:
public class EditPrefs extends PreferenceActivity {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.screen_prefs);
}
}
然后在/ res / xml文件夹中我有XML文件:
<PreferenceScreen
xmlns:android="http://schemas.android.com/apk/res/android">
<ListPreference
android:key="txtColor"
android:title="textView Color"
android:summary="select color for textViews"
android:entries="@array/txtColor"
android:entryValues="@array/txtColorValues" />
</PreferenceScreen>
在/ res / values中,我有这个XML文件包含项目及其值:
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="txtColor">
<item>blue</item>
<item>brown</item>
<item>gray</item>
<item>violet</item>
</string-array>
<string-array name="txtColorValues">
<item>#ff000099</item>
<item>#5F1E02</item>
<item>#333333</item>
<item>#421C52</item>
</string-array>
</resources>
然后我可以轻松地从另一个Android类调用此类,例如当用户单击菜单项时:
startActivity(new Intent(this, EditPrefs.class));
您可以在onCreate和onResume中调用首选项,如:
@Override
protected void onResume() {
super.onResume();
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
String txtColor = prefs.getString("txtColor", DEFAULT COLOR); // for instanse : #ff000099
textView.setBackgroundColor(Color.parseColor(txtColor));
}
答案 1 :(得分:1)
我已经解决了我的问题。
偏好设置
public static String theme = "Theme1";
@Override
public void onBackPressed() {
ListPreference listPreference = (ListPreference) findPreference("listPref");
String currValue = listPreference.getValue();
theme = currValue;
super.onBackPressed();
}
主要活动
if (Prefs.theme.equals("Theme1"))
setContentView(R.layout.main);
else
setContentView(R.layout.main2);
首选项XML
<ListPreference
android:title="themes"
android:summary="Select the option of the list"
android:key="listPref"
android:entries="@array/listReturnValue"
android:entryValues="@array/listDisplayWord" />