#android #android-activity
#Android #android-активность
Вопрос:
@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 на кнопке меню.я использую приведенный выше код, но он не работает
Ответ №1:
Вам нужно переопределить onKeyDown. Вы используете onKeyUp.
@Override
public boolean onKeyDown(int keycode, KeyEvent e)
{
switch(keycode)
{
case KeyEvent.KEYCODE_MENU:
doSomething();
return true;
}
return super.onKeyDown(keycode, e);
}
Ответ №2:
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);
}
Попробуйте этот код, у меня он работает
Ответ №3:
Вы забыли вызвать super
вызов onKeyDown
события —
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
return true;
}
return super.onKeyDown(keyCode, event);
}
Ответ №4:
Используйте onKeyDown для обнаружения события нажатия кнопки.
public boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_MENU) {
//do your work
return true;
}
return super.onKeyDown(keyCode, event);
}
Ответ №5:
Попробуйте приведенный ниже код, он работает…
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;
}
}