我正在制作一款允许用户搜索信息集的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 但不断获得空指针异常
答案 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语句。无论如何,这应该让您清楚地了解如何检测按下导航向上/向后箭头按钮的时间。 :)