【问题标题】:checked text view to switch preference检查文本视图以切换首选项
【发布时间】:2017-10-03 20:58:00
【问题描述】:

大家好,我想更改已选中的文本视图以切换首选项 我应该使用什么方法这是我检查的文本视图方法 我想做同样的事情,但有开关偏好

final CheckedTextView cc = (CheckedTextView) findViewById(R.id.checkedTextView);
    if (!mysetting.service) {
        ctv.setChecked(false);
    } else if (mysetting.service) {
        ctv.setChecked(true);
    }
    ctv.setOnClickListener(new OnClickListener() {
        public void onClick(View v) {
            if (ctv.isChecked()) {
                mysetting.service = false;
                ctv.setChecked(false);
                Editor editor = PreferenceManager.getDefaultSharedPreferences(MainActivity.this).edit();
                editor.putBoolean("service", false);
                editor.commit();
                return;
            }
            ctv.setChecked(true);
            mysetting.service = true;
            editor = PreferenceManager.getDefaultSharedPreferences(MainActivity.this).edit();
            editor.putBoolean("service", true);
            editor.commit();
        }

【问题讨论】:

    标签: android android-checkedtextview


    【解决方案1】:

    强烈建议使用 setOnCheckedChangeListener 打开(选中)或关闭(取消选中),一旦这个视图是一个 CompoundButton (link):

        switch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
    public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
        if(ischecked){
          //do something if is checked
        }else{
         //do something if is unchecked
        }
    }
    

    });

    【讨论】:

    • 请解释更多
    • CheckedTextView 不是容器 setOnCheckedChangeListener。
    【解决方案2】:
    private boolean serviceEnable = false;
    
        public boolean isServiceEnable() {
            return serviceEnable;
        }
    
        public void setServiceEnable(boolean serviceEnable) {
            this.serviceEnable = serviceEnable;
        }
    
        private void savePreference() {
            SharedPreferences.Editor editor = PreferenceManager.getDefaultSharedPreferences(this).edit();
            editor.putBoolean("service", isServiceEnable());
            editor.commit();
        }
    
        @Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
    
            setContentView(R.layout.checked_textview);
    
            final CheckedTextView cc = (CheckedTextView) findViewById(R.id.check_text_view);
            cc.setChecked(isServiceEnable());
    
            cc.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    setServiceEnable(!isServiceEnable());
                    cc.setChecked(isServiceEnable());
                    savePreference();
                }
            });
        }
    

    希望对你有帮助

    【讨论】:

    • 感谢您的帮助,但我想要的是使用 SwitchPreference 而不是检查文本视图,
    • 在你的回答中你使用了检查过的文本视图,但是我想要的是使用 Switch Preference 如果你不知道什么是 Switch Preference 你必须看到它
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2011-07-21
    • 2013-01-02
    • 2023-04-11
    • 1970-01-01
    • 1970-01-01
    • 2020-04-19
    相关资源
    最近更新 更多