Gradle Script--build.gradle(module)
dependencies {
implementation('androidx.preference:preference:1.1.0-alpha04')}
res--xml--preference.xml
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">
<PreferenceCategory
android:key="first_category"
android:title="更新设置"
android:summary="replace"
>
<CheckBoxPreference
android:key="prefer_updates"
android:title="是否更新"
android:summary="打开或关闭数据更新"
android:defaultValue="true">
</CheckBoxPreference>
<ListPreference
android:defaultValue="1000"
android:dependency="prefer_updates"
android:key="updata_interval"
android:title="更新时间"
android:summary="定义数据更新的时间间隔"
android:entries="@array/updataInterval"
android:entryValues="@array/updataIntervalValues"></ListPreference>
</PreferenceCategory>
<PreferenceCategory
android:key="second_category"
android:title="欢迎信息"
>
<EditTextPreference
android:key="welcome_message"
android:title="设置欢迎信息"
android:summary="定义需要显示的欢迎信息"
android:defaultValue="你好,android世界"
android:dialogMessage="欢迎信息"></EditTextPreference>
</PreferenceCategory>
</PreferenceScreen>
res--values--arrays.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
<string-array name="updataInterval">
<item name = "10000">1秒</item>
<item name = "10000">2秒</item>
<item name = "10000">30秒</item>
<item name = "10000">1分钟</item>
<item name = "10000">2分钟</item>
</string-array>
<string-array name="updataIntervalValues">
<item name = "10000">1000</item>
<item name = "10000">2000</item>
<item name = "10000">30000</item>
<item name = "10000">60000</item>
<item name = "10000">120000</item>
</string-array>
</resources>
MainFragment.java中
继承 PreferenceFragmentCompat,添加事件监听,实现方法
public class MainFragment extends PreferenceFragmentCompat implements SharedPreferences.OnSharedPreferenceChangeListener {
@Override
public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
setPreferencesFromResource(R.xml.preferences,rootKey);
}
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
//s代表key
if (s.equals("welcome_message")){
Preference connectionPref = findPreference(s);
connectionPref.setSummary(sharedPreferences.getString(s,""));
}
}
@Override
public void onResume() {
super.onResume();
getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
}
@Override
public void onPause() {
super.onPause();
getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
}}
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction()
// .replace(R.id.container, MainFragment.newInstance())
.replace(R.id.container, new MainFragment())
.commitNow();
}
}
}