偏好设定 preferenceScreen

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();
        }
    }

}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值