Ich habe eine Klasse mit Umschaltflächen wie so definiert:Wipptaste Makeln nicht auf 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;
}
}
, wenn ich die App und Toggle-b2 laufen, habe ich immer das Senden OFF Ergebnis ist Teil der, wenn, obwohl In der XML-Datei werden die Umschalttasten als false deklariert und die Schaltfläche wird nicht ein- oder ausgeschaltet.
Warum passiert das?
Großartig! erweiterte die richtige Klasse, implementierte Methode, ersetzte buttonView und kommentierte das manuelle Umschalten, das ich hatte. Das einzige Problem ist nun, dass sie laut xml als falsch beginnen sollten, aber beim ersten Antippen erhalte ich das Ergebnis "Sending OFF", was passiert, wenn die Bedingung b2.isChecked() wahr ist. – marciokoko
Das klingt richtig für mich. Wenn der 'Button' als _off_ startet, wird der erste Klick ihn auf _on_ (' isChecked() = true') umschalten, so dass Ihr 'if' Block ausgeführt wird. Die Methode 'onCheckedChanged()' wird ausgelöst, nachdem sich der Status geändert hat. Daher müssen Sie möglicherweise Ihre Logik mit dem 'OnClickListener' umdrehen. –