gpt4 book ai didi

java - 如何在 Android 中使用 PreferenceScreen

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:02:00 24 4
gpt4 key购买 nike

我想使用 PreferenceScreen 来设置页面,我知道使用 EditTextPreferences 并使用此文本。但我不知道其他对象,例如:我不知道从 ListPreference 更改文本颜色,或者我不知道从 CheckBoxPreference 显示/隐藏文本。

注意:请不要否定。我在互联网上搜索但找不到合适的主题,所以这是我问的问题。请指导我而不是给予负面评价!

主要 Activity 代码:

protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main_page);

///--- Setting Options
summary_tv = (TextView) findViewById(R.id.main_summary_text);
preferences = PreferenceManager.getDefaultSharedPreferences(this);
String colors = "";
String main_title_text = preferences.getString("setting_title_text", "main_title");
summary_tv.setText(main_title_text);
Boolean main_title_show = preferences.getBoolean("setting_title_show", true);

偏好 Activity 代码:

public class SettingPage 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
{
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting_prefrences);
}
}
}

偏好 XML 代码:

<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

<PreferenceCategory
android:key="setting_title_title_category"
android:title="Title options">

<CheckBoxPreference
android:id="@+id/setting_title_show_id"
android:key="setting_title_show"
android:title="Show Main Title"
android:summary="Show/hide MainPage title" />

<EditTextPreference
android:key="setting_title_text"
android:title="Set Main Title"
android:summary="Change MainPage title"
android:dialogTitle="Change Title"
android:dialogMessage="Change title please..."/>

</PreferenceCategory>

<PreferenceCategory
android:key="setting_title_font_category"
android:title="Font options">

<ListPreference
android:key="setting_title_font_color"
android:title="Title font colors"
android:summary="Change title font colors"
android:entries="@array/colors"
android:entryValues="@array/colors"
android:dialogTitle="Change font color" />

</PreferenceCategory>

<RingtonePreference
android:title="tes"/>

</PreferenceScreen>

字符串 XML 代码:

<resources>
<string name="app_name">1-MyTestDb Project</string>
<string name="title_activity_settings">Settings</string>

<string-array name="colors">

<item>White</item>
<item>Black</item>
<item>Primary</item>

</string-array>

</resources>

如何在 java 代码 中使用这个preferences。例如,使用 ListPreference 更改 TextView 颜色 ?

最佳答案

使用以下代码:

public static class MyPreferenceFragment extends PreferenceFragment implements OnSharedPreferenceChangeListener
{
@Override
public void onCreate(final Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.setting_prefrences);
}

@Override
protected void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}

@Override
protected void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}

@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key)
{
if (key.equals("setting_title_font_color"))
{
// get preference by key
Preference pref = findPreference(key);
// do your stuff here
}
}
}

要更改 Activity 中的 TextView 颜色,您需要将以下代码添加到您的 Activity onCreate() 中:

String color = preferences.getString("setting_title_font_color", "White");
if (color.equals("White") {
summary_tv.setTextColor(Color.WHITE);
} else if (color.equals("Black") {
summary_tv.setTextColor(Color.BLACK);
} else {
// default color
}

注意:只有当activity第一次被创建时,颜色才会改变。如果您希望在 Activity 运行时更新颜色,请将此代码放在 onResume() 方法中。

关于java - 如何在 Android 中使用 PreferenceScreen,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35599108/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com