2015-11-02 5 views
1

Это сложный вопрос.Как установить метод, только если установлен флажок?

У меня есть два флажка, и я хотел бы прикрепить текст к строке в зависимости от того, нажаты ли эти флажки. E.G. если щелкнуть checkbox1, он добавит «A» к строке «result» , если щелкнуть по кнопке checkbox2, добавляет «B» к строке «result»

Я пробовал несколько разных методов и, по-видимому, ближайший из них - onClick.

final CheckBox checkBox1 = (CheckBox) findViewById(R.id.checkBox); 
    checkBox1.setChecked(false); 

    checkBox1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if (checkBox1.isChecked()) { 
       builder.append(value1).append("\n"); 
       Toast.makeText(MainActivity.this, "item selected", Toast.LENGTH_LONG).show(); 
      } 
      else { 
       builder.append(""); 
      } 
     } 
    }); 

    final CheckBox checkBox2 = (CheckBox) findViewById(R.id.checkBox2); 
    checkBox2.setChecked(false); 

    checkBox2.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View v) { 
      if (checkBox2.isChecked()) { 
       builder.append(value2).append("\n"); 
       Toast.makeText(MainActivity.this, "item selected", Toast.LENGTH_LONG).show(); 
      } else { 
       builder.append(""); 
      } 
     } 
    }); 

Я пробовал также onChangedState или что-то в этом роде, но это не работает для моей цели.

После обычного поведения, если я нажму один раз, я добавлю «А», а если дважды щелкнуть, добавьте «». Тем не менее, если я нажму три раза, я добавлю «A» «A», а не только «A».

Любая идея о том, как устранить эту неприятность? вероятно, какое-то истинное/ложное утверждение?

+0

я хотя еще builder.setLength (builder.length() - 5); BUT (1) Что делать, если я не нажимаю дважды на том же контрольном? например Я нажимаю на checkbox1, затем на checkbox2, затем снова нахожу флажок checkbox1, чтобы отключить его: удалит ли append, сгенерированный Checkbox1 или Checkbox2? (2) Что делать, если длина переменной? Я не могу стереть -5, если длина равна 6 или выше – MDR

ответ

0

Вы можете сделать это

CheckBox Check = (CheckBox) rootView.findViewById(R.id.Finalizado); 
      boolean isChecked = Check.isChecked(); 

if(isChecked) 
{ 
    //doStuff... 
} 
else 
{ 
    //doAnotherStuff... 
} 
+0

Ола Тьяго, почему бы помочь rootView? – MDR

+0

Я использовал этот код во фрагменте, rootview - это вид, завышенный в методе oncreateview, извините за это .... –