@Override
public boolean onKeyUp(int keyCode, KeyEvent event) {
Toast.makeText(MainTabActivity.this, "On key up ", Toast.LENGTH_LONG).show();
if (keyCode == KeyEvent.KEYCODE_MENU) {
// ........
Toast.makeText(MainTabActivity.this, "On key up ", Toast.LENGTH_LONG).show();
return true;
}
return true;
}
我在Tabactivity工作,我想在菜单按钮上发生onclick事件时检测到事件。我正在使用上面的代码,但它不工作
您需要覆盖onKeyDown。你正在使用onKeyUp。
@Override
public boolean onKeyDown(int keycode, KeyEvent e)
{
switch(keycode)
{
case KeyEvent.KEYCODE_MENU:
doSomething();
return true;
}
return super.onKeyDown(keycode, e);
}
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
Toast.makeText(this, "On key up ", Toast.LENGTH_LONG).show();
return true;
}
return super.onKeyDown(keyCode, event);
}
尝试这个代码,对我来说它有效
你忘了给super
打电话给onKeyDown
事件 -
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
return true;
}
return super.onKeyDown(keyCode, event);
}
使用onKeyDown检测按钮单击事件。
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
//do your work
return true;
}
return super.onKeyDown(keyCode, event);
}
尝试下面的代码,它的工作......
InnerRecevierM innerReceiver;
IntentFilter intentFilter;
@Override
protected void onCreate(Bundle savedInstanceState) {
...
innerReceiver = new InnerRecevierM();
intentFilter = new IntentFilter(Intent.ACTION_CLOSE_SYSTEM_DIALOGS);
registerReceiver(innerReceiver, intentFilter);
}
class InnerRecevierM extends BroadcastReceiver {
final String SYSTEM_DIALOG_REASON_KEY = "reason";
final String SYSTEM_DIALOG_REASON_MENU_KEY = "recentapps";
@Override
public void onReceive(Context context, Intent intent) {
String action = intent.getAction();
if (Intent.ACTION_CLOSE_SYSTEM_DIALOGS.equals(action)) {
String reason = intent.getStringExtra(SYSTEM_DIALOG_REASON_KEY);
if (reason != null) {
if (reason.equals(SYSTEM_DIALOG_REASON_MENU_KEY)) {
Toast.makeText(MainActivity.this, "Menu Button Pressed", Toast.LENGTH_SHORT).show();
}
}
}
}
}
@Override
protected void onDestroy() {
super.onDestroy();
if(innerReceiver != null) {
unregisterReceiver(innerReceiver);
innerReceiver = null;
}
}