如何向活动添加查找工具

时间:2018-03-23 02:56:11

标签: java android find full-text-search

First image Second image

在我的应用程序中,有五个活动包含很长的文本。我想在我的活动中添加查找工具,这样当用户向搜索栏输入内容时,如果活动包含该单词,则该单词应自动滚动到顶部突出显示。我可以调用搜索对话框(按照说明)在Android Developer页面中)。你能帮助我将搜索对话框中的输入与我活动中的文本进行比较并将其滚动到顶部吗?

MainActivity.java

 public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.search:
            onSearchRequested(); //opens the search dialog
            break;

    return super.onOptionsItemSelected(item);
}

SearchableActivity.java

public class SearchableActivity extends AppCompatActivity {

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

        //Get the intent, verify the action and get the query
        Intent intent = getIntent();
        if (intent.ACTION_SEARCH.equals(intent.getAction())) {
            String query = intent.getStringExtra(SearchManager.QUERY);
            doMySearch(query);
        }
    }

    private void doMySearch(String query) {
        //what to do here???
    }
}

此处可搜索的活动是一项不同的活动。如何将搜索输入与另一个活动(MainActivity.java)中的文本进行比较?

1 个答案:

答案 0 :(得分:0)

您要做的是:

  • 从活动中获取某些输入值(在MainActivity对话框中输入),然后使用该值与另一个活动中的其他内容进行比较(SearchableActivity)

应该没有什么方法可以这样做,我建议一个简单的方法:

  1. 将值输入存储到可以在整个应用程序中访问Global的全局变量
  2. 然后使用全局变量中的商店值来比较您想要的任何活动。
  3. 要将某些内容存储到全局变量,您可以使用 SharedPreference方法: Android Shared preferences example

    此方法存储将值指定到全局变量中,其中所有活动都可以访问,并且仅在您命令删除之前永久存储。类似于网站的“会话”。

    在您的情况下,我将通过以下方式使用共享偏好:

    1. 当用户在搜索对话框中输入内容时,我会将该值存储在SharedPreference变量中。
    2. 然后当需要使用搜索对话框的输入值进行比较的 SearchableActivity 时,我将调用SharedPreference变量进行比较。
    3. 有关您的信息:

      共享首选项对于存储用于永久使用应用程序的值非常有用,其范围涵盖应用程序中的所有活动。您可以对它进行很好的控制,因为您可以随时指定存储,重写,删除值。

      希望这会有帮助。