지금 블루투스와 연동하는 어플을 하나 만들고 있는데 그 중 토글 버튼 사용에 대해 도저히 모르겠어서 질문을 합니다
SYSTEM_MODE 라는 변수로 토글버튼을 제어하려고 하는데
public String SYSTEM_MODE = "1";
요런 식의 초기값을 가지고 있습니다
토글 버튼 사용에 대한 부분은 onCreate() 내부에
final ToggleButton onoff = (ToggleButton) findViewById(R.id.onofftoggl);
onoff.setOnClickListener(new View.OnClickListener() {
//@Override
public void onClick(View v) {
if (onoff.isChecked()) {
SYSTEM_MODE = "1";
} else {
SYSTEM_MODE = "0";
}
}
});
if (SYSTEM_MODE.equals("1")) {
onoff.setChecked(true);
sys_onoff.setText("On");
} else if (SYSTEM_MODE.equals("0")){
onoff.setChecked(false);
sys_onoff.setText("Off");
}
요렇게 들어가 있으며, 어플 실행시 토글 버튼은 onoff.setChecked(false)로 작동하구요
이럴 때 블루투스에서 값을 받아오는 함수
public void Reaction(String Data)
{
Log.i("aaa", "-0000000000000000");
if (Data != null && Data.length() > 0) {
Log.i("aaa", Data);
Log.i("aaa", "111111111111");
if(Data.equals("020003"))
{
Log.i("aaa", "a");
showToast("시스템 On");
SYSTEM_MODE = "1";
}
else if(Data.equals("020103"))
{
Log.i("aaa", "b");
showToast("시스템 Off");
SYSTEM_MODE = "0";
}
else if(Data.equals("020203"))
{
Log.i("aaa", "c");
showToast("사람 있어");
}
else if(Data.equals("020303"))
{
Log.i("aaa", "d");
showToast("사람없어");
}
}
}
를 통해 SYSTEM_MODE의 값을 바꾸고 이걸 통해서
if (SYSTEM_MODE.equals("1")) {
onoff.setChecked(true);
sys_onoff.setText("On");
} else if (SYSTEM_MODE.equals("0")){
onoff.setChecked(false);
sys_onoff.setText("Off");
}
요 부분으로 토글값도 변화를 주고 싶었는데 OnCreate()내부에 있어서인지 어플 실행시 처음만 적용되고 그 뒤로는 적용되지 않네요.
어떻게 하면 블루투스에서 받은 값을 통해 토글 버튼을 제어할수 있을지 궁금합니다.




블루투스로 값 받았을 때 setChecked하면 되지 않나요? 물론 블루투스 데이터는 쓰레드에서 받을테니까 UI 쓰레드의 핸들러로 메시지를 보내거나 runOnUiThread 함수를 써야겠지요.