#android
#Android
Вопрос:
У меня есть группа кнопок для действия.Когда я нажимаю на кнопку, она устанавливает текст в textview и изменяет цвет фона кнопки. Затем, когда я снова нажму ту же кнопку, он перейдет к следующему действию.Приведенный ниже код выполняет эти действия. Я изменил текст кнопки и выполнил действие второго щелчка. Есть ли лучший способ сделать это без изменения текста.
В коде, который я показал для 1 кнопки. Точно так же я делаю это для других кнопок.
Активность
public class Activity2 extends ActionBarActivity implements View.OnClickListener {
Button R1btn, R2btn, R3btn;
private TableLayout tableLayout;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_2);
tableLayout=(TableLayout)findViewById(R.id.tl);
R1btn = (Button) findViewById(R.id.button1);
R1btn.setOnClickListener(this);
}
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.button1:
Button button1 = (Button)view;
String btnText = button1.getText().toString();
if (btnText.equals("1")) {
R1btn.setBackgroundColor(Color.RED);
R2btn.setBackgroundColor(Color.GREEN));
R3btn.setBackgroundColor(Color.GREEN));
TextView rTV = (TextView) findViewById(R.id.rTV);
rTV.setText(R1);
button1.setText("1 ");
} else if (btnText.equals("1 ")) {
Intent intent = new Intent(Activity2.this, Activity3.class);
startActivity(intent);
button1.setText("1");
break;
}
}
}
Комментарии:
1. используйте логическую переменную для каждой кнопки и измените свое действие в соответствии с ее значением.
Ответ №1:
Используя тег вашей кнопки, вы сможете достичь своей цели. Пример кода приведен ниже:
Button button1 = (Button)view;
String btnTag= button1.getTag().toString();
// For First Time when button is clicked
if (btnTag.equals("") || btnTag.equals("CLICKED2")) {
R1btn.setBackgroundColor(Color.RED);
R2btn.setBackgroundColor(Color.GREEN));
R3btn.setBackgroundColor(Color.GREEN));
button1.setTag("CLICKED1");
} else if (btnTag.equals("CLICKED1")) {
button1.setTag("CLICKED2");
Intent intent = new Intent(Activity2.this, Activity3.class);
startActivity(intent);
}
break;
Комментарии:
1. tag () кажется хорошим вариантом. Почему вы также добавили btnTag.equals(«CLICKED2») в условие if?
2. чтобы проверить, какой щелчок выполнить
3. да, понял это. проверено с ней и без нее.
4. но проверьте случай onResume, когда вы вернетесь к своей активности и снова выполните щелчок
5. хорошо, на данный момент проблем нет. на самом деле я собираюсь изучить общие настройки следующим. так что проверим.
Ответ №2:
используйте длинный щелчок
button = (Button) findViewById(R.id.button_view);
button .setOnClickListener(new OnClickListener() {
public void onClick(View v) {
shortclick();
}
});
button .setOnLongClickListener(new View.OnLongClickListener() {
public boolean onLongClick(View v) {
longclick();
return true;
}
});
public void shortclick()
{
Toast.makeText(это: «Зачем ты это сделал? Это больно !!!», Тост.LENGTH_LONG).show();
}
public void longclick ()
public void shortclick()
и другие одиночные клики
Ответ №3:
Вы можете определить статические логические переменные, которые будут сопоставлены с соответствующими кнопками. При нажатии кнопки сделайте переменную true . В зависимости от значения переменной вы можете выполнять свои действия.Нет необходимости изменять текст кнопок.
Комментарии:
1. на самом деле я пытался, но не смог сделать все успешно. можете ли вы показать мне пример.
Ответ №4:
// инициализировать значение
boolean isButton1 = false;
// метод щелчка
@Override
public void onClick(View view) {
switch(view.getId()){
case R.id.button1:
isButton1 != isButton1;
if (isButton1) {
R1btn.setBackgroundColor(Color.RED);
R2btn.setBackgroundColor(Color.GREEN));
R3btn.setBackgroundColor(Color.GREEN));
TextView rTV = (TextView) findViewById(R.id.rTV);
rTV.setText(R1);
} else {
Intent intent = new Intent(Activity2.this, Activity3.class);
startActivity(intent);
}
break;
}
}
Ответ №5:
Вот пример, когда кто-то создал свой собственный класс кнопок, который меняется с значка воспроизведения на значок паузы.
Это довольно хороший способ, потому что весь код находится в одном центральном месте.
Вам просто нужно добавить статическое логическое значение для «запоминания», если кнопка сейчас находится на «воспроизведение или пауза»
Затем вы можете проверить это (например, в методе updateState) и изменить внешний вид в зависимости от текущего состояния.
static boolean isPlay = true;
public void updateState() {
if (isPlay) {
//Change appearance
isPlay = false;
} else {
//Change appearance
isPlay=true;
}
}