重置搜索小工具(搜索查看)值(Resetting Search Widget (SearchView

2019-08-02 03:13发布

我有2个activites:第一, HomepageActiviy ,有使用另一项活动,搜索数据的搜索小工具SearchActivity

当我回到离我想要做的就是SearchActiviyHomepageActivity ,搜索小工具去崩溃,并用空的文本。

我试着这样做以后的事:

public class HomepageActivity extends Activity {
    @TargetApi(11)
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.projectslist, menu);

        if(Build.VERSION.SDK_INT >= 11) {
            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            SearchView searchView = (SearchView) menu.findItem(R.id.homepage_search).getActionView();
            ComponentName component = new ComponentName(this, SearchActivity.class);
            searchView.setSearchableInfo(searchManager.getSearchableInfo(component));
            searchView.setIconifiedByDefault(true);
            searchView.setQuery("", false);

        }

        return super.onCreateOptionsMenu(menu);
    }

    […]

    @TargetApi(11)
    @Override
    protected void onRestart() {
        super.onRestart();
        if(Build.VERSION.SDK_INT >= 11)
            invalidateOptionsMenu();
        launchAsynchronousImageDownload();
    }
}

如果是晕倒小部件也显示,在插件的文本还记得搜索文本(我之后重新打开窗口小部件)。 如何重置widget的文字?

谢谢你的帮助! ;)

Answer 1:

您也可以尝试以下操作:

searchView.setQuery("", false);
searchView.clearFocus();


Answer 2:

这是魔术

searchView.setQuery( “”,假); //清除文本

searchView.setIconified(真); //关闭搜索编辑器并重新进行搜索图标

HomepageActivity插入的OnCreate函数后功能的onSaveInstanceState

这个功能将触发每次你打开一个新的活动, 开辟新的活动的时候,才重新搜索控件的值

  protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);
         searchView.setQuery("", false);
        searchView.setIconified(true);
    }


Answer 3:

这为我工作:

首先,我声明在活动的顶部的菜单项变量:

private MenuItem mSearchMenuItem;

我定义在OnCreateOptionsMenu()可变:

mSearchMenuItem = menu.findItem(R.id.action_search);

我宣布invalidateOptionsMenu()中的onResume():

@Override
protected void onResume() {
    invalidateOptionsMenu();
    super.onResume();
}

最后,我在onPrepareOptionsMenu上的菜单项称为collapseActionView()()。

@Override
public boolean onPrepareOptionsMenu(Menu menu) {
    mSearchMenuItem.collapseActionView();

    return super.onPrepareOptionsMenu(menu);
}


Answer 4:

searchView.setQuery("", false);
searchView.setIconified(false);


Answer 5:

我也有这个问题,它的工作,如果我把它放在onPrepareOptionsMenu。

@Override
public boolean onPrepareOptionsMenu (Menu menu) {
     SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
     searchView.setQuery("", false);
     // rest of code...
}


Answer 6:

只是发现了一个丑陋的方式,使其工作(阅读评论,看看差异):

public class HomepageActivity extends Activity {
    // Declaring SearchView as an instance object
    private SearchView searchView;

    @TargetApi(11)
    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        MenuInflater inflater = getMenuInflater();
        inflater.inflate(R.menu.projectslist, menu);

        if(Build.VERSION.SDK_INT >= 11) {
            SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
            // Using instance var instead of local var
            searchView = (SearchView) menu.findItem(R.id.homepage_search).getActionView();
            ComponentName component = new ComponentName(this, SearchActivity.class);
            searchView.setSearchableInfo(searchManager.getSearchableInfo(component));
            searchView.setIconifiedByDefault(true);
            // Setting query is not anymore required
            //searchView.setQuery("", false);
        }

        return super.onCreateOptionsMenu(menu);
    }

    […]

    @TargetApi(11)
    @Override
    protected void onRestart() {
        super.onRestart();
        // Do not need to recreate menu
        /*if(Build.VERSION.SDK_INT >= 11)
            invalidateOptionsMenu();*/
        if(Build.VERSION.SDK_INT >= 11) {
            // Calling twice: first empty text field, second iconify the view
            searchView.setIconified(true);
            searchView.setIconified(true);
        }
        launchAsynchronousImageDownload();
    }
}

它很丑陋,我认为,如果有人为一个更好的主意,只是告诉我:)



文章来源: Resetting Search Widget (SearchView) value