如何检测菜单按钮点击事件?

问题描述 投票:0回答:5
@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事件时检测到事件。我正在使用上面的代码,但它不工作

android android-activity
5个回答
0
投票

您需要覆盖onKeyDown。你正在使用onKeyUp。

@Override
public boolean onKeyDown(int keycode, KeyEvent e) 
{
    switch(keycode) 
    {
        case KeyEvent.KEYCODE_MENU:
            doSomething();
            return true;
    }

    return super.onKeyDown(keycode, e);
}

0
投票
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); 
} 

尝试这个代码,对我来说它有效


0
投票

你忘了给super打电话给onKeyDown事件 -

public boolean onKeyDown(int keyCode, KeyEvent event) {
        if (keyCode == KeyEvent.KEYCODE_MENU) {
            return true;
        }
        return super.onKeyDown(keyCode, event);
    }

0
投票

使用onKeyDown检测按钮单击事件。

public boolean onKeyDown(int keyCode, KeyEvent event) {        
     if (keyCode == KeyEvent.KEYCODE_MENU) {         
        //do your work      
        return true;      
    }       
    return super.onKeyDown(keyCode, event);   
} 

0
投票

尝试下面的代码,它的工作......

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;
    }
    }
© www.soinside.com 2019 - 2024. All rights reserved.