Android 如何检测是否按下了向上按钮
在“我的活动”中,操作栏仅显示左箭头和活动标题 当我按下左箭头时,活动返回到上一个活动,但onKeyUp、OnkeyDown和OnBackPressed方法中没有注册任何事件 但当我按下手机上的Back键(在底部)时,活动返回到上一个,所有方法onKeyUp、OnKeyDown和OnBackPressed都会注册一个事件(在logcat中) 我如何捕捉那个左箭头(我想它被称为向上按钮) 我需要捕获密钥的原因是要在onPause方法中知道活动是由用户而不是系统销毁的(例如,如果用户切换到另一个活动)Android 如何检测是否按下了向上按钮,android,onkeydown,onkeyup,onbackpressed,Android,Onkeydown,Onkeyup,Onbackpressed,在“我的活动”中,操作栏仅显示左箭头和活动标题 当我按下左箭头时,活动返回到上一个活动,但onKeyUp、OnkeyDown和OnBackPressed方法中没有注册任何事件 但当我按下手机上的Back键(在底部)时,活动返回到上一个,所有方法onKeyUp、OnKeyDown和OnBackPressed都会注册一个事件(在logcat中) 我如何捕捉那个左箭头(我想它被称为向上按钮) 我需要捕获密钥的原因是要在onPause方法中知道活动是由用户而不是系统销毁的(例如,如果用户切换到另一个活动
通过进一步调查,我发现UP按钮给出了一个由OnOptions ItemSelected方法捕获的事件,由于菜单上没有其他按钮,我知道它就是这个按钮。是的,你是对的,你可以检测到OnOptions ItemSelected方法中是否按下了UP按钮。这应该起作用:
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
// Do something here. This is the event fired when up button is pressed.
return true;
}
return super.onOptionsItemSelected(item);
}
看
处理对操作项的点击
当用户按下某个操作时,系统将调用活动的OnOptions ItemSelected()方法。使用传递给此方法的MenuItem,可以通过调用getItemId()来标识操作。这将返回由标记的ID属性提供的唯一ID,以便您可以执行适当的操作。例如:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case android.R.id.home:
onUpButtonPressed();
return true;
case R.id.action_search:
openSearch();
return true;
case R.id.action_compose:
composeMessage();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
...
}
注意:如果从片段中膨胀菜单项,请通过片段
类的onCreateOptionsMenu()回调,系统调用
当用户选择以下选项之一时,该片段的OnOptions ItemSelected()
这些项目。但是,该活动有机会处理该事件
首先,系统首先调用
活动,然后为片段调用相同的回调。确保
活动中的任何片段也有机会处理
回调,始终将调用作为默认值传递给超类
行为,而不是在不处理项目时返回false
要将应用程序图标启用为向上按钮,请调用setDisplayHomeAsUpEnabled()。例如:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle presses on the action bar items
switch (item.getItemId()) {
case android.R.id.home:
onUpButtonPressed();
return true;
case R.id.action_search:
openSearch();
return true;
case R.id.action_compose:
composeMessage();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);
ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
...
}
谢谢。我添加了代码来测试home键,以防我将在FuturAbank You中的操作栏中添加其他操作项!尽管这条线已经很旧了,但这条线仍然有效!(当我面对同样的问题时)。谢谢!谢谢