Android的复选框preference复选框、Android、preference

2023-09-05 06:03:38 作者:与梦逃亡

我找不到复选框preference任何教程。我可以用一个列表preference,但我不能使用复选框preference。现在,我想,如果用户设置的checbox,举杯味精说真,如果他设置它关闭,敬酒味精说假。到目前为止,我有这样的:

preferences.xml:

 <复选框preference
          机器人:标题=查看调用UI
          安卓:设置defaultValue =真
          机器人:总结=显示通话界面点击呼叫按钮,当
          机器人:关键=复选框preF/>
 

编辑preferences.java:

 公共类编辑preferences扩展preferenceActivity {

    字符串列表preference;
    布尔复选框preference;

    @覆盖
    公共无效的onCreate(包savedInstanceState){
        super.onCreate(savedInstanceState);
        加preferencesFromResource(R.xml preferences。);
    }

    公共无效ONSTART(意向意图,诠释startId){
        获得preFS();
    }

    私人无效的get preFS(){
        共享preferences preFS = preferenceManager
                .getDefaultShared preferences(getBaseContext());
        名单preference = prefs.getString(名单preF,NR1);
        复选框preference = prefs.getBoolean(注记格preF,真正的);
    }
}
 

编辑:解感谢David Caunt:

 复选框preF。
    西顿preferenceChangeListener(新preference.On preferenceChangeListener(){

    在preferenceChange公共布尔(preference preference,对象为newValue){
        如果(newValue.toString()。等于(真)){
            Toast.makeText(getApplicationContext(),CB:+真,
                                                    Toast.LENGTH_SHORT).show();
        } 其他 {
            Toast.makeText(getApplicationContext(),CB:+假,
                                                    Toast.LENGTH_SHORT).show();
        }
        返回true;
    }
});
 
android studio勾选框,android studio创建android项目 5 CheckBox复选框的使用

解决方案

您需要一个监听器添加到preference在onCreate方法

 最后的CheckBox preference复选框preF =(复选框preference)获得preferenceManager()。找到preference(复选框preF);

    复选框pref.setOn preferenceChangeListener(新preference.On preferenceChangeListener(){
        在preferenceChange公共布尔(preference preference,对象为newValue){
            Log.d(MyApp的,preF+ preference.getKey()+改为+ newValue.toString());
            返回true;
        }
    });
 

I cannot find any tutorials on checkbox preference. I can use a listpreference, but I can't use checkbox preference. For now, I want that if user sets on the checbox, a toast msg says "true" and if he sets it off, the toast msg says "false". So far I have this:

preferences.xml:

 <CheckBoxPreference
          android:title="Show Call UI"
          android:defaultValue="true"
          android:summary="Show Call Interface when clicking call button"
          android:key="checkboxPref" />

EditPreferences.java:

public class EditPreferences extends PreferenceActivity {

    String ListPreference;
    boolean CheckboxPreference;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.preferences);
    }

    public void onStart(Intent intent, int startId) {
        getPrefs();
    }

    private void getPrefs() {
        SharedPreferences prefs = PreferenceManager
                .getDefaultSharedPreferences(getBaseContext());
        ListPreference = prefs.getString("listPref", "nr1");
        CheckboxPreference = prefs.getBoolean("checkboxPref", true);
    }
}

Edit: Solution thanks to David Caunt:

checkboxPref.
    setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {

    public boolean onPreferenceChange(Preference preference, Object newValue) {
        if (newValue.toString().equals("true")) {
            Toast.makeText(getApplicationContext(), "CB: " + "true",
                                                    Toast.LENGTH_SHORT).show();
        } else {
            Toast.makeText(getApplicationContext(), "CB: " + "false",
                                                    Toast.LENGTH_SHORT).show();
        }
        return true;
    }
});

解决方案

You need to add a listener to the Preference in your onCreate method

    final CheckBoxPreference checkboxPref = (CheckBoxPreference) getPreferenceManager().findPreference("checkboxPref");

    checkboxPref.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {            
        public boolean onPreferenceChange(Preference preference, Object newValue) {
            Log.d("MyApp", "Pref " + preference.getKey() + " changed to " + newValue.toString());       
            return true;
        }
    });