【问题标题】:isChecked() returns true though the switch is not checkedisChecked() 返回 true,但未检查开关
【发布时间】:2016-06-22 05:55:44
【问题描述】:

我使用了一个开关来设置通知。如果选中了开关,即通知已打开,我想保存通知。

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

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

怎么了?

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

        }
    });

保存时:

                        if (notify.isChecked()) {
                            setNotificationTime(c);

                        }

这里出了什么问题?

【问题讨论】:

  • 您介意从您的帖子中删除水平滚动条吗?

标签: java android uiswitch ischecked


【解决方案1】:

OnCheckedChangeListener 大部分时间都无法正常工作。首先在您的复选框上设置 OnClickListener 并在该方法中使用 isChecked 来获取您的复选框的值,如下所示

    checkBox.setOnClickListener(new OnClickListener() {
   @Override
   public void onClick(View v) {
    if (checkBox.isChecked())
    {

    }else {

    }
   }
  });

【讨论】:

    猜你喜欢
    • 2016-04-01
    • 2011-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-09-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多