2011-03-11 51 views
1

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

@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); 
    } 

回答

0

在我为你加载枪之前,通常不鼓励改变硬件键的功能。用户期望某些行为,他们不应该混淆。

这就是说,你可以做到这一点湾捕捉onKeyDown事件和测试,看是否返回键被按下的一个:

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

在重新阅读你的问题,我现在认识到它的声音就像您希望在显示上下文菜单时检测按键一样。我不知道是否/如何做到这一点,但我希望以上内容仍然有帮助。 – Blumer 2011-03-11 19:55:37

+0

该代码不会在IF语句内部运行,并且外部代码会变回以影响整个活动。我只想回到IF语句 – 2011-03-11 19:59:22

+0

内部。因此,用户调出菜单,按下后退键(不关闭菜单),程序只是简单地记下按钮被按下,用户选择“Something”项目,并且程序以特殊的方式处理“Something”选择,因为后退键已被按下。那是对的吗? – Blumer 2011-03-11 20:02:41