#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. @ Йерун ван дер Шали, добро пожаловать, если это может вам помочь, пожалуйста, примите мой ответ .. спасибо.