首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何在点击时更改SwitchPreference标题

如何在点击时更改SwitchPreference标题
EN

Stack Overflow用户
提问于 2016-08-26 02:39:48
回答 2查看 2.7K关注 0票数 2

我正在使用我的PreferenceActivity,我有一个SwitchPreference,我没有使用android:title="Title"访问它的标题,因为我想在Switch被点击时更改它。

我试过这种方法,但行不通。我也在相关的主题上搜索,但没有解决我的问题。

代码语言:javascript
复制
public class PrefsFragment extends PreferenceFragment {

    private SwitchPreference pref;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        addPreferencesFromResource(R.xml.settings);
        // Load the preferences from an XML resource

        pref = (SwitchPreference)findPreference("SWITCH");
        pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {

            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                if (newValue.toString().equals("SWITCH")) {
                    boolean test = (Boolean) newValue;
                    if (test) {
                        pref.setTitle("ChangedTitle");
                    } else {
                        pref.setTitle("DefaultTitle");
                    }
                }

                return true;
            }
        });
    }
}

settings.xml

代码语言:javascript
复制
<?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen
    xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory
        android:title="Settings">

        <ListPreference
            android:key="yourPref"
            android:title="Title"
            android:dialogTitle="Select"
            android:summary="%s"
            android:defaultValue="4"
            android:entries="@array/titles"
            android:entryValues="@array/values"/>

    </PreferenceCategory>

    <PreferenceCategory
        android:title="Title">

        <SwitchPreference
            android:key="SWITCH"/>

    </PreferenceCategory>
</PreferenceScreen>

你能帮我个忙吗?

EN

回答 2

Stack Overflow用户

发布于 2016-08-26 03:45:01

尝试在侦听器回调中调用preference.setTitle("YOUR TEXT");,而不是pref.setTitle"YOUR TEXT");侦听器传入已更改的首选项。

票数 0
EN

Stack Overflow用户

发布于 2020-10-22 21:56:52

问题出在你的OnSharedPreferenceChangeListener上。而不是这个,

代码语言:javascript
复制
pref = (SwitchPreference)findPreference("SWITCH");
        pref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {

            @Override
            public boolean onPreferenceChange(Preference preference, Object newValue) {
                if (newValue.toString().equals("SWITCH")) {
                    boolean test = (Boolean) newValue;
                    if (test) {
                        pref.setTitle("ChangedTitle");
                    } else {
                        pref.setTitle("DefaultTitle");
                    }
                }

                return true;
            }
        });

尝尝这个

代码语言:javascript
复制
SharedPreferences.OnSharedPreferenceChangeListener listener = new SharedPreferences.OnSharedPreferenceChangeListener() {
    @Override
    public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String s) {
        if (s.equals("SWITCH")) {
            SwitchPreference sp = (SwitchPreference) findPreference(s);
            boolean test = sharedPreferences.getBoolean(s, false);
            if (test) { 
                sp.setTitle("ChangedTitle"); 
            } else { 
                sp.setTitle("DefaultTitle");
            }
        }
    }
}
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/39152571

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档