如何检测Android动作布局上的后退按钮何时被点击?

时间:2014-12-11 20:03:13

标签: android menu

我正在制作一款允许用户搜索信息集的Android应用。我首先显示集合,但是当点击操作栏中的搜索按钮时,操作栏中会显示一个操作布局(搜索栏)。进行搜索时,列表视图信息将替换为查询中的信息。但是,当用户点击搜索栏旁边的后退箭头按钮时,我想用原始信息替换查询信息。

有没有办法检测搜索栏旁边的后退箭头按钮?非常感谢你的帮助!

菜单XML

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
tools:context="">
<item
    android:id="@+id/search"
    android:title="Search"
    android:showAsAction="always|collapseActionView"
    android:actionLayout="@layout/some_layout"
/>
</menu>

活动代码:尝试此操作:SearchView onMenuItemActionCollapse Not Working 但不断获得空指针异常

1 个答案:

答案 0 :(得分:1)

有一些方法可以检测到它。我想到的第一件事是:创建一个默认值为false的布尔值。每当您查询特定的搜索结果时,都会将布尔值设置为true。当后退箭头&#39;按下(向上导航)按钮,检查布尔结果是否为真。如果这是真的,则表示该应用不会向您显示原始信息集,也不应该关闭您的活动。

例如(部分来自Google文档):

public boolean originalContentReplaced = false;

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {

    // Respond to the action bar's Up/Home button
    case android.R.id.home:
        if(originalContentReplaced) {
            // Do what you need to do here to get the original content back.
            this.originalContentReplaced = false;
        } else {
            NavUtils.navigateUpFromSameTask(this);
            // You could also use onBackPressed().
        }

        return true;
    }
    return super.onOptionsItemSelected(item);
}

我不知道您如何查询新的搜索结果,但是当您的搜索成功时,您应该将originalContentReplaced变量更改为true。

按下硬件后退按钮时,可以使用完全相同的if-else语句。无论如何,这应该让您清楚地了解如何检测按下导航向上/向后箭头按钮的时间。 :)