可搜索配置和可搜索活动是什么?

3
我正在为我的应用程序设计一个简单的搜索功能,我已经成功地在屏幕工具栏上创建了一个搜索图标。现在我遇到的问题是实现搜索功能背后的工作机制。
通过Android官方文档设置搜索界面,我发现了创建可搜索配置、可搜索活动、ACTION_SEARCH等各种过程。
我是Android开发的新手,很难理解所有这些概念。请问有人能以简单的方式解释上述过程吗?

我建议你查找关于SearchView的博客,这将帮助你更好地理解。 - ANUJ GUPTA
2个回答

1
  1. 通过Android官方文档设置搜索界面,我发现了创建可搜索配置、可搜索活动和ACTION_SEARCH的各种过程!

  2. 我是Android开发新手,很难理解所有这些概念,有人能用简单的术语解释上述过程吗?

好的,很容易。首先,阅读创建搜索界面。其次,从这里开始,将xml添加到res/xml/项目目录中。

然后,您需要按照以下链接创建一个可搜索的活动

创建可搜索活动

创建完Searchable Activity后,您需要在AndroidManifest.xml中声明它。只需将以下内容添加到您的SearchableActivity即可:
<activity android:name=".SearchableActivity" >
        <intent-filter>
            <action android:name="android.intent.action.SEARCH" />
        </intent-filter>
        <meta-data android:name="android.app.searchable"
                   android:resource="@xml/searchable"/>
    </activity>

在这些步骤之后,阅读此内容: PerformingSearch 并在用户执行搜索时从您的活动中接收查询(例如从 MainActivitySearchableActivity)。

0
在您的活动的onCreateOptionsMenu()方法中,解压XML菜单资源(res/menu/options_menu.xml)并获取菜单项。编写以下代码:
MenuItem searchItem=menu.findItem(R.id.searchMenu);
SearchView searchView=(SearchView)                
MenuItemCompat.getActionView(searchItem);

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
    @Override
     public boolean onQueryTextSubmit(String query) {
           Toast.makeText(MainActivity.this, ""+query,     
    Toast.LENGTH_SHORT).show();
    return false;
}

我将上述代码放入 onCreate..() 中,结果出现了以下错误: java.lang.NullPointerException: Attempt to invoke interface method 'android.view.View android.view.MenuItem.getActionView()' on a null object reference - black sheep 369
@HoneyKhandelwal 是的,您需要将它们粘贴到 OnCreateOptionsMenu() 中;但它只返回搜索查询! - ʍѳђઽ૯ท
你首先需要创建一个用于搜索菜单项的XML,然后才能在活动中获取它的引用。如果你没有在XML中创建搜索菜单,你会得到空指针异常。 - Ameer Hamza

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接