首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >isChecked()返回true,但未选中开关

isChecked()返回true,但未选中开关
EN

Stack Overflow用户
提问于 2016-03-08 10:25:27
回答 1查看 3.5K关注 0票数 2

我使用了一个开关来设置通知。如果检查了开关,我想保存通知,即通知是打开的。

但是如果我打开开关,再次关闭开关,保存事件。然后,通知也将被设置。

正如我在if(isChecked() == true)上调试的那样,如果我打开或关闭开关一次,它将返回true。如果我不改变开关的状态,它将返回false。

怎么了?

代码语言:javascript
复制
 notify.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged(CompoundButton buttonView,
                                     boolean isChecked) {

            if (isChecked) {

                linearSelectTime.setEnabled(true);
                linearSelectTime.setOnClickListener(new View.OnClickListener() {
                    @Override
                    public void onClick(View v) {
                        final AlertDialog.Builder builder = new AlertDialog.Builder(AddEventActivity.this);

                        int selected = 0;

                        builder.setSingleChoiceItems(R.array.time_array, selected,
                                new DialogInterface.OnClickListener() {
                                    public void onClick(DialogInterface dialog, int item) {

                                        String[] time = getBaseContext().getResources().getStringArray(R.array.time_array);

                                        notifyTime.setText(time[item]);

                                        notificationTime = time[item];

                                        dialog.dismiss();
                                    }
                                });
                        builder.show();
                    }

                });
            } else {

                alarmManager = (AlarmManager) getSystemService(Context.ALARM_SERVICE);
                intent = new Intent(getApplicationContext(), NotificationReceiver.class);
                pendingIntent = PendingIntent.getBroadcast(getApplicationContext(), RQS_1, intent, 0);
                alarmManager.cancel(pendingIntent);

                notificationTime = "";
                notifyText.setVisibility(View.INVISIBLE);
                linearSelectTime.setEnabled(false);
            }

        }
    });

节省:

代码语言:javascript
复制
                        if (notify.isChecked()) {
                            setNotificationTime(c);

                        }

这里出了什么问题?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2016-03-08 10:30:37

OnCheckedChangeListener大部分时间都不能正常工作。首先在复选框上设置OnClickListener,然后在该方法中使用isChecked to getValue进行复选框,如下所示

代码语言:javascript
复制
    checkBox.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    if (checkBox.isChecked())
    {

    }else {

    }
   }
  });
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35864811

复制
相关文章

相似问题

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