gpt4 book ai didi

android - 如何检测向上按钮是否被按下

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:33:02 26 4
gpt4 key购买 nike

在我的 Activity 中,操作栏仅显示左箭头和 Activity 标题。

当我按下向左箭头时, Activity 返回到上一个 Activity ,但在 onKeyUp、OnkeyDown 和 OnBackPressed 方法中没有注册任何事件。

但是当我按下手机上的返回键(在底部)时, Activity 会返回到前一个,并且所有 onKeyUp、OnKeyDown 和 OnBackPressed 方法都会注册一个事件(在 logcat 中)。

我怎样才能捕捉到左箭头(我认为它叫做向上按钮)?

我需要捕获 key 的原因是要在 onPause 方法中知道 Activity 是由用户而不是系统销毁的(例如,如果用户切换到另一个 Activity )。

通过进一步调查,我发现向上按钮提供了一个由 onOptionsItemSelected 方法捕获的事件,并且由于菜单上没有其他按钮,我知道它是这个按钮。

最佳答案

参见 http://developer.android.com/guide/topics/ui/actionbar.html#Handling

处理操作项的点击

当用户按下一个 Action 时,系统会调用您的 Activity 的 onOptionsItemSelected() 方法。使用传递给此方法的 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);
}
}

Note: If you inflate menu items from a fragment, via the Fragment class's onCreateOptionsMenu() callback, the system calls onOptionsItemSelected() for that fragment when the user selects one of those items. However, the activity gets a chance to handle the event first, so the system first calls onOptionsItemSelected() on the activity, before calling the same callback for the fragment. To ensure that any fragments in the activity also have a chance to handle the callback, always pass the call to the superclass as the default behavior instead of returning false when you do not handle the item.

要将应用程序图标启用为向上按钮,请调用 setDisplayHomeAsUpEnabled()。例如:

@Override 
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_details);

ActionBar actionBar = getSupportActionBar();
actionBar.setDisplayHomeAsUpEnabled(true);
...
}

关于android - 如何检测向上按钮是否被按下,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31867292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com