嗨,我正在使用以下代码
private boolean statusUSB = false;
private final BroadcastReceiver usbReceiver = new BroadcastReceiver() {
public void onReceive(Context context, Intent intent) {
final String action = intent.getAction();
if (action != null) {
switch (action) {
case UsbManager.ACTION_USB_DEVICE_DETACHED:
final UsbDevice detDevice = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
final String detMsg="Device DEtached";
statusUSB = false;
Toast.makeText(context, "USB Disconnected", Toast.LENGTH_SHORT).show();
break;
case UsbManager.ACTION_USB_DEVICE_ATTACHED:
case UsbManager.ACTION_USB_ACCESSORY_ATTACHED:
final UsbDevice attDevice = (UsbDevice) intent.getParcelableExtra(UsbManager.EXTRA_DEVICE);
final String attMsg="Device atached";
statusUSB = true;
Toast.makeText(context, "USB Connected", Toast.LENGTH_SHORT).show();
break;
default:
break;
}
}
}
};
要检测USB端口何时连接或断开连接,我还插入了一个标志:
statusUSB
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate( R.menu.main, menu );
if (statusUSB == true){
// Opcion1
}
if (statusUSB == false){
//Opcion2
}
return true;
}
事实是,当连接和断开USB端口时,Android会同时检测到这两种情况,但是该标志不会更改,或者我无法从菜单中读取该值,我做得还好吗?还是有另一种方式来提供此标志?
答案 0 :(得分:1)
onCreateOptionsMenu()
仅在第一次显示选项菜单时被调用一次。您正在尝试在此处更新菜单状态,该状态将不起作用。
要在每次显示菜单时更新菜单,应使用onPrepareOptionsMenu(Menu)
。
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
if (statusUSB == true){
// Update menu
}
if (statusUSB == false){
// Update menu
}
}