Утверждение флажка

#android #button #checkbox

#Android #кнопка #флажок

Вопрос:

Я хочу, чтобы был установлен флажок, прежде чем они смогут продолжить переход к следующей странице (XML). Он работает отдельно, но не вместе. В том смысле, что если я нажму кнопку воспроизведения без установленного флажка, она должна показывать только всплывающее окно. Это то, что я получил.

У флажка XML установлен элемент, поскольку кнопка метода onClick имеет startNewActivity в качестве метода onClick.

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
}

public void itemClicked (View v) {
    final Button play =(Button)findViewById(R.id.playButton);
    CheckBox Approved = (CheckBox) findViewById(R.id.Approved);
    Approved.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (((CheckBox) v).isChecked()) {
                play.setEnabled(true);

            } else {
                Toast.makeText(MainActivity.this, "Please Approve!", Toast.LENGTH_LONG).show();
            }
        }
    });
}

public void startNewActivity (View view){
    final EditText edit = (EditText) findViewById(R.id.editText);
    String Name = (String) edit.getText().toString();

    Intent intent = new Intent (this, GameSetUp.class);
    intent.putExtra("name", Name);

    itemClicked(view);
    startActivity(intent);
}
  

}

Пожалуйста, можете ли вы сказать, что я делаю не так.

Гр. Йерун

Ответ №1:

Мне кажется, что вам вообще не следует отключать кнопку воспроизведения. Попробуйте вот так:

 @Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Button play = (Button) findViewById(R.id.playButton);
    CheckBox Approved = (CheckBox) findViewById(R.id.Approved);
    play.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if (Approved.isSelected()) {
                startNewActivity();
            } else {
                Toast.makeText(MainActivity.this, "Please Approve!", Toast.LENGTH_LONG).show();
            }
        }
    });
}

public void itemClicked(View v) {
    // This method can be removed
}
  

Комментарии:

1. Привет, ваш код не справляется с задачей. Он показывает всплывающее окно, но не переходит на следующую страницу.

2. РЕДАКТИРОВАТЬ: ответ Дилипа Пателя должен дать вам то, что вам нужно.

Ответ №2:

Добавление к ответу @ehehhh,

OnCheckedChangeListener Будет использоваться для управления кнопкой воспроизведения. Вы ошиблись в логике своего startNewActivity метода. Удалите вызов на itemClicked из startNewActivity . Вместо этого поместите это так

 @Override
protected void onCreate(Bundle savedInstanceState)
{
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    final Button play = (Button) findViewById(R.id.playButton);
    CheckBox Approved = (CheckBox) findViewById(R.id.Approved);
    Approved.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener()
    {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked)
        {
            play.setEnabled(isChecked);
        }
    });
}

public void startNewActivity(View view)
{
    final EditText edit = (EditText) findViewById(R.id.editText);
    String Name = (String) edit.getText().toString();

    Intent intent = new Intent(this, GameSetUp.class);
    intent.putExtra("name", Name);

    startActivity(intent);
}
  

Кроме того, прочитайте больше о соглашениях об именовании для Android, как JAVA, так и XML 🙂

Комментарии:

1. Спасибо, что я обязательно сделаю.

2. Привет, SlashG, я попробовал твой код. Но кнопка запуска продолжает работать, хотя флажок не установлен!

3. Этот код не отключает Button по умолчанию. Установите это в XML или в onCreate() методе, подобном этому: play.setEnabled(Approved.isChecked())

Ответ №3:

Вы можете попробовать этот код, надеюсь, это сможет вам помочь..

   Button play;
CheckBox Approved;

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    play = (Button) findViewById(R.id.playButton);
    Approved = (CheckBox) findViewById(R.id.Approved);
}

public void startNewActivity(View view) {
    final EditText edit = (EditText) findViewById(R.id.editText);
    String Name = (String) edit.getText().toString();
    if (Approved.isChecked()) {
        play.setEnabled(true);
        Intent intent = new Intent(this, GameSetUp.class);
        intent.putExtra("name", Name);
        startActivity(intent);
    } else {
        Toast.makeText(MainActivity.this, "Please Approve!", Toast.LENGTH_LONG).show();
    }
}
  

Комментарии:

1. Дорогой Дилип, Большое спасибо за код. Awnser оказался проще, чем я думал.

2. @ Йерун ван дер Шали, добро пожаловать, если это может вам помочь, пожалуйста, примите мой ответ .. спасибо.