У меня есть класс с кнопками быстрого перехода, определенный следующим образом:кнопки Переключения не переключаясь на Android
public class DeviceControlActivity extends Activity implements View.OnClickListener
private ToggleButton b2, b3, b4, b5, b6, b7, b8, b9, b10, b11, b12;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.gatt_services_characteristics);
b2 = (ToggleButton) findViewById(R.id.button2);
b2.setOnClickListener(this); // calling onClick() method
b2.setBackgroundColor(Color.GRAY);
b3 = (ToggleButton) findViewById(R.id.button3);
b3.setOnClickListener(this);
b3.setBackgroundColor(Color.GRAY);
@Override
public void onClick(View v) {
// default method for handling onClick Events..
switch (v.getId()) {
case R.id.button2:
// call writeCharacteristic but concatenate pin #
if (b2.isChecked()) {
b2.setChecked(false);
b2.setBackgroundColor(Color.GRAY);
// do code to send pin# with writeCharacteristic
String str = "Pin11,0" + "\n";
Log.d(TAG, "Sending OFF result=" + str);
/*final byte[] tx = str.getBytes();
if(mConnected) {
characteristicTX2.setValue(tx);
mBluetoothLeService.writeCharacteristic(characteristicTX2);
mBluetoothLeService.setCharacteristicNotification(characteristicRX2,true);
}*/
} else if (!b2.isChecked()) {
b2.setChecked(true);
b2.setBackgroundColor(Color.BLUE);
// do code to send pin# with writeCharacteristic
String str = "Pin11,1" + "\n";
Log.d(TAG, "Sending ON result=" + str);
/*final byte[] tx = str.getBytes();
if(mConnected) {
characteristicTX2.setValue(tx);
mBluetoothLeService.writeCharacteristic(characteristicTX2);
mBluetoothLeService.setCharacteristicNotification(characteristicRX2, true);
}*/
}
break;
}
}
при запуске приложения и тумблер b2, я всегда получаю отправку результате части, если, несмотря на то, в xml кнопки переключения объявляются как ложные, и кнопка не включает или выключает.
Почему это происходит?
Отлично! расширил правый класс, реализовал метод, заменил buttonView и закомментировал ручной переключатель, который у меня был. Единственная проблема теперь в том, что они должны начинаться как ложные в соответствии с xml, но при первом нажатии я получаю результат Sending OFF, который происходит, когда условие b2.isChecked() истинно. – marciokoko
Это звучит правильно для меня. Если 'Button' начинается с _off_, первый щелчок переключит его на _on_ (' isChecked() = true'), поэтому ваш блок 'if' будет выполнен. Метод onCheckedChanged() 'срабатывает после изменения состояния, поэтому вам может потребоваться перевернуть вашу логику из того, что вы имели с помощью функции OnClickListener. –