OnQueryTextListenerCompat没有得到触发 [英] OnQueryTextListenerCompat not getting triggered

查看:237
本文介绍了OnQueryTextListenerCompat没有得到触发的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图让使用搜索查看与运行Android 2.3版到4.4或以上版本的设备兼容的应用程序。我现在有内部的以下code的 ActionBarActivity ,运行蜂窝及以上,但不得早设备而工作在设备正常:

I'm trying to make an app that uses SearchView compatible with devices running Android version 2.3 up to 4.4+. I currently have the following code inside an ActionBarActivity, which works fine in devices running Honeycomb and above but not earlier devices:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) {

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
    android.support.v7.widget.SearchView searchView = (android.support.v7.widget.SearchView) menu.findItem(R.id.action_search).getActionView();
    searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
    searchView.setIconified(true);
    searchView.setOnQueryTextListener(new OnQueryTextListener() {

        @Override
        public boolean onQueryTextSubmit(String s) {
            return false;
        }

        @Override
        public boolean onQueryTextChange(String s) {
            return false;
        }
    });
} else {
    View searchView = SearchViewCompat.newSearchView(this);
    SearchViewCompat.setOnQueryTextListener(searchView, new OnQueryTextListenerCompat() {
        @Override
        public boolean onQueryTextSubmit(String s) {
            return false;
        }

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

我现在面临的问题是,搜索查看UI显示在早期设备正常,但OnQueryTextListenerCompat似乎并没有得到过触发。我缺少的东西吗?谢谢你。

The problem I'm facing is that the SearchView UI shows up fine in earlier devices, but the OnQueryTextListenerCompat doesn't seem to get triggered ever. Am I missing something? Thanks.

推荐答案

我不使用SearchViewCompat我测试它从姜饼兼容性,解决了这个问题到最新版本。

I've solved this problem by not using SearchViewCompat I tested it's compatability from Gingerbread and to the latest version

在我的search_menu.xml

in my search_menu.xml

<menu xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:yourapp="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools" >
 <item
        android:id="@+id/menu_item_search"
        android:icon="@android:drawable/ic_menu_search"
        android:orderInCategory="1"
        android:title="@string/menu_search"
        yourapp:actionViewClass="android.support.v7.widget.SearchView"
        yourapp:showAsAction="always|collapseActionView"/>
</menu>

在我的main.xml

and in my Main.xml

    public class Main extends ActionBarActivity implements OnQueryTextListener {
    private SearchView searchView;
    private SearchManager searchManager;
        protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        supportRequestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS);
        setContentView(R.layout.activity_main);
    }


     @Override
            public boolean onCreateOptionsMenu(final Menu menu) {
                // Inflate the menu; this adds items to the action bar if it is present.
                getMenuInflater().inflate(R.menu.search_menu, menu);
                View view = MenuItemCompat.getActionView(menu.findItem(R.id.menu_item_filter)); 
    searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
                MenuItem searchItem = menu.findItem(R.id.menu_item_search);
                searchView = (SearchView) MenuItemCompat.getActionView(searchItem);
                searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
                searchView.setQueryHint("Search...");
                searchView.setIconifiedByDefault(false); 
                searchView.setIconified(false);
                searchView.setOnQueryTextListener(Main.this);
                searchView.clearFocus();
                return super.onCreateOptionsMenu(menu);
    }
    public boolean onQueryTextChange(String val) {

        if(!val.isEmpty()){
            Log.e(""+val);
        }
        return false;
    }

    @Override
    public boolean onQueryTextSubmit(String val) {  
        Log.e(""+val);
        return false;
    }
}

这篇关于OnQueryTextListenerCompat没有得到触发的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆