我从在Android Studio上进行Android Apps编程开始,然后在一个简单的蓝牙打开/关闭开关上进行练习,该开关工作正常,可以激活和停用蓝牙,但是如果我从状态栏上的快速设置激活或停用了蓝牙(而不关闭应用程序)开关不会更新。我认为该应用失去了焦点,因此我尝试验证蓝牙状态并更新onResume上的开关,但它不起作用。有想法吗?
public class bluetooth_Control extends AppCompatActivity{
Switch aSwitch;
BluetoothAdapter blueadp;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_bluetooth__control);
aSwitch = (Switch) findViewById(R.id.switch2);
blueadp = BluetoothAdapter.getDefaultAdapter();
aSwitch.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
if(isChecked){
Intent intent = new Intent(BluetoothAdapter.ACTION_REQUEST_ENABLE);
startActivityForResult(intent, 0);
}
else{
blueadp.disable();
}
}
});
}
@Override
protected void onResume(){
super.onResume();
setBTswitch(blueadp);
}
public void setBTswitch(BluetoothAdapter b){
if(b.isEnabled()){
aSwitch.setChecked(true);
}
else{
aSwitch.setChecked(false);
}
}
}
答案 0 :(得分:0)
您应该添加有关“更新onResume()上的开关”的代码,否则我们无法找出问题所在。我建议在onResume()回调中添加日志,以检查获取蓝牙状态的代码是否工作正常。
答案 1 :(得分:0)
好吧,如果有人有相同的躁动,我只会说:onWindowFocusChanged(),因为当您向下拖动通知和快速设置面板时,onResume()和onPause()不会触发。这样就解决了这个问题,也许看起来并不干净准确,因为在您向上拖动以隐藏通知和快速设置面板之前,开关已更新,我一直在做更多的研究,并且可能会更准确地了解听众。