Приложение вылетает, если флажок не был нажат до нажатия кнопки - PullRequest
0 голосов
/ 18 марта 2019

Мое приложение работает с точки зрения навигации, хотя флажок отмечен, но, конечно, при использовании приложения флажок не всегда будет установлен и вместо этого будет учитываться что-то еще.Мой код:

Мне нужно, чтобы Go Go btn работал независимо от состояния флажка

Спасибо заранее

---------------------------------ОБНОВИТЬ----------------------------------

Из комментариев мне удалось заставить код работать, но теперь он снова начинает закрываться при каждом нажатии кнопки, и окно булавки не отображается, когдафлажок установлен?

вот мой код

        checkBox = findViewById(R.id.checkBox);
        checkBox.setOnClickListener(this);
        GoBtn = findViewById(R.id.GoBtn);
        GoBtn.setOnClickListener(this);

    @Override
    public void onClick(View v) {
        //method called
        if (v == checkBox){
            if (checkBox.isChecked())
            {
                userPin.setVisibility(View.VISIBLE);
                //when checkbox is check, userPin becomes visible
            }
        }
        else if (v == GoBtn){
            ChangeActivityStudent();
        }
        {
            userPin.setVisibility(View.INVISIBLE);
            //otherwise userPin is invisible
        }

        // called when check box is clicked

        GoBtn.setOnClickListener(new View.OnClickListener() {
            @Override
           public void onClick(View v) {
               ChangeActivityStudent();
            }
        });
   }
    private void ChangeActivityStudent(){
       Intent intent = new Intent(MainActivity.this, StudentActivity.class);
       startActivity(intent);
    }


    }

спасибо за любую помощь

Ответы [ 2 ]

1 голос
/ 18 марта 2019

Вы устанавливаете onClickListener на GoBtn внутри другого onClickListener().Это означает, что onClickListener на GoBtn не будет установлено, пока вы не нажмете на CheckBox.Замените ваш onClick() метод следующим:

        @Override
        public void onClick(View v) {
            if(v == checkBox){
    if (checkBox.isChecked())
            {
                userPin.setVisibility(View.VISIBLE);
                //when checkbox is check, userPin becomes visible
            }
    }else if(v == GoBtn){
    ChangeActivityStudent();
    }

}

И установите прослушиватель для обеих кнопок в вашем onCreate().

checkBox.setOnClickListener(this);
GoBtn.setOnClickListener(this);

Более того, я не думаю, что вы должны настраиватьonClickListener на checkBox, так как это проверенная кнопка.И вам может понадобиться установить флажок состояния.Лучший метод для использования - CheckBox.setOnCheckedChangeListener().Дай мне знать, если тебе еще понадобится помощь.

0 голосов
/ 18 марта 2019

Кажется, ваш GoBtn.setOnClickListener находится не в том месте.
Не должно быть внутри onClick(View v) метода. В настоящее время вы применяете логику к нажатию кнопки только после нажатия кнопки checkBox.
Вероятно, это не то, что приводит к сбою приложения, но оно не будет работать, если его не изменить.

Что вам нужно сделать, это переместить GoBtn.setOnClickListener рядом с местом, где вы звоните checkBox.setOnClickListener(this);
если вы хотите вызвать клик программно, позвоните GoBtn.performClick().

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...