Android 从上下文菜单中的“后退”硬键重新启动活动

Android 从上下文菜单中的“后退”硬键重新启动活动,android,android-intent,listener,back,Android,Android Intent,Listener,Back,我想检查设备上的硬备份键是否仅在我的上下文菜单中按下,以便我可以运行意图以重新启动活动。谢谢这是到目前为止我的密码 @Override public boolean onCreateOptionsMenu(Menu menu) { item = menu.add("Something"); item.setIcon(R.drawable.ic_menu_something); return super.onCreateOptionsMenu(menu); } @Ov

我想检查设备上的硬备份键是否仅在我的上下文菜单中按下,以便我可以运行意图以重新启动活动。谢谢这是到目前为止我的密码

@Override
public boolean onCreateOptionsMenu(Menu menu) {

    item = menu.add("Something");
    item.setIcon(R.drawable.ic_menu_something);

    return super.onCreateOptionsMenu(menu);
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    //search
    if (item.getTitle() == "Something") {
//how do I check if hard back key was pressed inside this IF statement as to run below intent
        Intent myCustomView = new Intent(this, com.example.something.class);
        startActivityForResult(myCustomView, RESULT_OK);
    }

在我给你装枪之前,一般不鼓励改变硬件按键的功能。用户期望有特定的行为,他们不应该被打扰

也就是说,您可以捕获onKeyDown事件并测试Back键是否为按下的键:

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

重新阅读您的问题后,我现在意识到,您似乎想在显示关联菜单时检测按下按钮。我不知道是否/如何做到这一点,但我希望上面的内容仍然有用。代码不会在if语句内部运行,而在if语句外部又会发生变化,从而影响整个活动。我只想在IF语句内部生效。因此,用户打开菜单,按下后退键(不关闭菜单),程序只会注意到按钮被按下,用户选择“某物”项,程序以特殊方式处理“某物”选择,因为按下了后退键。是这样吗?在if(item.getTitle()=“Something”){}中,我有一个多选单选框,十个用户选择某些项目,当他们回击时,我想重新启动活动,因为所有内容都会更改。你听懂了吗?我甚至不知道这是否是正确的方法。我通过简单地在对话框中添加一个积极按钮来解决这个问题。谢谢你的帮助