【问题标题】:How to pass searchview text from action bar to new activity? in android如何将搜索视图文本从操作栏传递到新活动?在安卓中
【发布时间】:2017-07-14 11:14:09
【问题描述】:
public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.main, menu);
       searchView = (SearchView)menu
            .findItem(R.id.action_search).getActionView();   
       SearchManager searchManager = 
            (SearchManager)getSystemService(SEARCH_SERVICE);
       searchView.setSearchableInfo(
             searchManager.getSearchableInfo(getComponentName()));
       return true;
} 

我是否应该编写从 searchview 获取查询然后传递的新方法 它在使用 Intent 吗? 喜欢

public void getInput()
    {
      String input = (String)searchView.getQuery();

      Intent in = new Intent(this, search_result.class);
      //TITLE is an instance variable
      //public static final String TITLE = "title";
        in.putExtra(TITLE, input);
        startActivity(in);
     }

(或)

我应该在 MainActivity 的 OnCreate 方法中写吗?

(顺便说一下,我在导航抽屉的 content_main.xml 中有搜索视图 活动,我需要从这里获取输入并将其传递给另一个活动 文本视图)

【问题讨论】:

  • 感谢@savepopulation 编辑:)

标签: android android-intent android-actionbar searchview


【解决方案1】:

试试这个方法
如下设置搜索文本监听器

public boolean onCreateOptionsMenu(Menu menu) {
       getMenuInflater().inflate(R.menu.main, menu);
       searchView = (SearchView)menu
            .findItem(R.id.action_search).getActionView();   
       SearchManager searchManager = 
            (SearchManager)getSystemService(SEARCH_SERVICE);
       searchView.setSearchableInfo(
             searchManager.getSearchableInfo(getComponentName()));

 searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
               getInput(query);
                return false;
            }

            @Override
            public boolean onQueryTextChange(String newText) {

                return false;
            }
        });
       return true;
} 

在 Intent 中传递 searchText

public void getInput(String searchText)
    {
        Intent in = new Intent(this, search_result.class);
        in.putExtra("TITLE", searchText);
        startActivity(in);
     }

更新

使用下面的代码在onCreate()search_result.java 中获取seachtext,并将其传递给您要根据sarchText 执行任何操作的方法

String searchText = getIntent().getStringExtra("TITLE");

【讨论】:

  • 谢谢你的回答:) 这对我仍然不起作用......让我解释一下当用户点击时操作栏中有一个搜索视图,它会打开并接受输入。输入后,当用户单击 android 键盘中的搜索图标或按 Enter 时,它应该获取输入的文本并将其传递给特定功能通过意图获取它的新活动
  • 您好,先生,我的编码方式与您提到的相同,并且我得到了完美的文本。我还有一个查询-在上述问题之后,我在 search_result.java 中有一个方法,因此我需要在该方法中使用此输入来执行操作。
【解决方案2】:

尝试使用此代码

Intent in = new Intent(this , Search_result.class);
in.putExtra("tag",input);
startActivity(in);

通过使用从 Serch_result Activity 获取输入,

getIntent().getExtras().getString("tag");

【讨论】:

  • 谢谢你的回答:) 这对我仍然不起作用......让我解释一下当用户点击时操作栏中有一个搜索视图,它会打开并接受输入。输入后,当用户单击 android 键盘中的搜索图标或按 Enter 时,它应该获取输入的文本并将其传递给特定功能通过意图获取它的新活动
猜你喜欢
  • 1970-01-01
  • 2017-08-29
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-11-05
相关资源
最近更新 更多