gpt4 book ai didi

android - 关于BroadcastReceiver的疑惑

转载 作者:行者123 更新时间:2023-11-29 23:29:16 24 4
gpt4 key购买 nike

您好,我正在使用以下代码

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 会检测到这两种情况,但标志不会改变,或者我无法在我的菜单中读取这个值,我做得很好吗?或者有另一种方法来提供这个标志?

最佳答案

onCreateOptionsMenu() 只被调用一次,第一次显示选项菜单。您正在尝试更新此处的菜单状态,这将不起作用。

要在每次显示时更新菜单,您应该使用 onPrepareOptionsMenu(Menu)

@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
if (statusUSB == true){
// Update menu
}
if (statusUSB == false){
// Update menu
}
}

关于android - 关于BroadcastReceiver的疑惑,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52958546/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com