Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/206.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何防止SearchView自动清除搜索的文本 正常行为: 当我在ActionBar上的SearchView小部件中请求搜索时,在 单击软键盘的搜索操作按钮,输入文本为 已从搜索视图中清除 我想要的行为: 我希望在执行搜索时,我的输入文本保持不变。这怎么可能_Android_Android Actionbar_Searchview - Fatal编程技术网

Android 如何防止SearchView自动清除搜索的文本 正常行为: 当我在ActionBar上的SearchView小部件中请求搜索时,在 单击软键盘的搜索操作按钮,输入文本为 已从搜索视图中清除 我想要的行为: 我希望在执行搜索时,我的输入文本保持不变。这怎么可能

Android 如何防止SearchView自动清除搜索的文本 正常行为: 当我在ActionBar上的SearchView小部件中请求搜索时,在 单击软键盘的搜索操作按钮,输入文本为 已从搜索视图中清除 我想要的行为: 我希望在执行搜索时,我的输入文本保持不变。这怎么可能,android,android-actionbar,searchview,Android,Android Actionbar,Searchview,我读过的官方文件,和指南,还有,但没有任何运气 编辑: 我发现每当我滚动我的ViewPager时都会发生此文本重置。尝试以下操作: mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { mSearchVi

我读过的官方文件,和指南,还有,但没有任何运气

编辑: 我发现每当我滚动我的ViewPager时都会发生此文本重置。

尝试以下操作:

  mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener()
    {
        @Override
        public boolean onQueryTextSubmit(String query)
        {
            mSearchView.setQuery(query,false);
            return false;
        }

        @Override
        public boolean onQueryTextChange(String newText)
        {
            return false;
        }
    });

如果您的搜索小部件调用另一个活动来处理查询,它将被清除,因为该活动是新创建的

因此,您需要从两个位置手动设置查询:

  • onCreateOptions菜单
    用于初始化搜索小部件
  • onNewIntent
    接收查询的位置
为什么来自两个地方?因为如果搜索处理活动是新创建的,
onNewIntent
将首先被调用,并且搜索小部件尚未准备好使用。在这种情况下,将查询保存在
onNewIntent
并将其设置在
oncreateoptions菜单上。否则可直接设置为
onNewIntent

下面是一个例子:

private String mQuery;
private SearchView mSearchView;

@Override
protected void onNewIntent(Intent intent) {
    super.onNewIntent(intent);
    mQuery = intent.getStringExtra(SearchManager.QUERY);
    if (mSearchView != null) {
        mSearchView.setQuery(mQuery, false);
    }
    // Do something with the new query
}

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the actionbar items
    getMenuInflater().inflate(R.menu.actionbar_items, menu);

    // Get SearchView and set the searchable configuration
    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    mSearchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
    mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

    // Disable collapsing the search widget
    mSearchView.setIconifiedByDefault(false);
    // Set the query
    mSearchView.setQuery(mQuery, false);

    return true;
}

通常情况下,除非您这样做,否则文本不会被清除。您的小部件是否调用另一个活动来处理查询?@user3249477没有我的“sngle top”活动来处理意图本身。为我工作。我正在使用appcompat.v7.SearchView,在提交时我折叠了菜单项。每当我执行新的搜索时,文本将被清除,适配器过滤器也将被删除。我强烈建议使用AppCompat SearchView