java– 使用SearchView的Android abs,onQueryTextListener无效

java– 使用SearchView的Android abs,onQueryTextListener无效,第1张

概述我正在尝试使用带有 *** 作栏sherlock的SearchView支持v4版本.所以我在 *** 作栏中有我的搜索按钮–>当我触摸它时键盘显示和搜索栏也.我的问题是我需要使用侦听器onQueryTextSubmit和onQueryTextChange但它们永远不会被触发.我需要使用searh查询字符串并使用它做自定义的东西.这是

我正在尝试使用带有 *** 作栏sherlock的SearchVIEw支持v4版本.

所以我在 *** 作栏中有我的搜索按钮 – >当我触摸它时键盘显示和搜索栏也.

我的问题是我需要使用侦听器onqueryTextsubmit和onqueryTextChange但它们永远不会被触发.我需要使用searh查询字符串并使用它做自定义的东西.

这是完整的activity.java

public class ActivityMain extends SherlockFragmentActivity implements OnqueryTextListener, DialogFragmentListener {    /**     * PRIVATE ATTRIBUTES     */    private static final String TAG                             = "ActivityMain";    private VIEwPager           _vIEwPager;    private TabsAdapter         _tabsAdapter;    private DialogFiltre        _dialogFiltre;    private String              _searchCurrentquery;    // data    private boolean             _doubleBackToExitpressedOnce    = false;    @OverrIDe    public boolean onPrepareOptionsMenu(Menu menu) {        menu.clear();        switch ((int) _vIEwPager.getCurrentItem()) {            case 0:                getSupportMenuInflater().inflate(R.menu.empty_menu, menu);                break;            case 1:                getSupportMenuInflater().inflate(R.menu.action_bar_menu, menu);                break;            case 2:                getSupportMenuInflater().inflate(R.menu.empty_menu, menu);                break;        }        return super.onPrepareOptionsMenu(menu);    }    @OverrIDe    public boolean onCreateOptionsMenu(Menu menu) {        getSupportMenuInflater().inflate(R.menu.action_bar_menu, menu);        MenuItem searchItem = menu.findItem(R.ID.search);        SearchVIEw searchVIEw = (SearchVIEw) searchItem.getActionVIEw();        searchVIEw.setsubmitbuttonEnabled(true);        searchVIEw.setonqueryTextListener(queryTextListener);        return true;    }    @OverrIDe    public boolean onqueryTextsubmit(String query) {        Log.i(TAG, "onqueryTextsubmit--");        onSearchClicked(query);        // hIDe keyboard        inputMethodManager inputManager = (inputMethodManager) this.getSystemService(Context.input_METHOD_SERVICE);        inputManager.hIDeSoftinputFromWindow(this.getCurrentFocus().getwindowToken(), inputMethodManager.HIDE_NOT_ALWAYS);        return false;    }    @OverrIDe    public boolean onqueryTextChange(String newText) {        Log.d(TAG, "onqueryTextChange--");        _searchCurrentquery = newText.toString();        EtablissementApplication._adapter.getFilter().filter(_searchCurrentquery);        return true;    }    private voID onSearchClicked(String query) {        Log.d(TAG, "onSearchClicked--");        _searchCurrentquery = query.toString();        EtablissementApplication._adapter.getFilter().filter(_searchCurrentquery);    }    @OverrIDe    public boolean onoptionsItemSelected(MenuItem item) {        switch (item.getItemID()) {            case androID.R.ID.home:                getSupportActionbar().setdisplayHomeAsUpEnabled(false);                break;            case R.ID.search:                break;            case R.ID.menu_filtre:                _dialogFiltre = DialogFiltre.newInstance(R.string.menu_filtre, this);                _dialogFiltre.setValIDDialogListener(this);                _dialogFiltre.show(getSupportFragmentManager(), null);                break;        }        return super.onoptionsItemSelected(item);    }

解决方法:

您正在尝试使用新的SearchVIEw,而不是使用SupportMenuInflater创建的SearchVIEw.
您将侦听器设置为您在屏幕上看到的不同SearchVIEw.
此外,每次调用onPrepareOptionsMenu时,都会创建新的SearchVIEw,因此它没有设置侦听器.

尝试像这样做onPrepareOptionsMenu:

@OverrIDepublic boolean onPrepareOptionsMenu(Menu menu) {    menu.clear();    switch ((int) _vIEwPager.getCurrentItem()) {        case 0:            getSupportMenuInflater().inflate(R.menu.empty_menu, menu);            break;        case 1:            getSupportMenuInflater().inflate(R.menu.action_bar_menu, menu);            MenuItem searchItem = menu.findItem(R.ID.search);            SearchVIEw searchVIEw = (SearchVIEw) searchItem.getActionVIEw();            searchVIEw.setsubmitbuttonEnabled(true);            searchVIEw.setonqueryTextListener(queryTextListener);            break;        case 2:            getSupportMenuInflater().inflate(R.menu.empty_menu, menu);            break;    }    return super.onPrepareOptionsMenu(menu);}

并删除重写的方法

@OverrIDepublic boolean onCreateOptionsMenu(Menu menu) { }
总结

以上是内存溢出为你收集整理的java – 使用SearchView的Android abs,onQueryTextListener无效全部内容,希望文章能够帮你解决java – 使用SearchView的Android abs,onQueryTextListener无效所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1116049.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-29
下一篇 2022-05-29

发表评论

登录后才能评论

评论列表(0条)

保存