标签: searchview

menu.findItem返回null

我找不到解决方案请帮忙

工具:

public class VentasActivity extends ActionBarActivity
    implements NavigationDrawerFragment.NavigationDrawerCallbacks, android.support.v7.widget.SearchView.OnQueryTextListener
Run Code Online (Sandbox Code Playgroud)

where返回null:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    if (!mNavigationDrawerFragment.isDrawerOpen()) {
        getMenuInflater().inflate(R.menu.sales, menu);
        restoreActionBar();

       // HERE RETURNS NULL
        searchView = (SearchView) menu.findItem(R.id.action_product_search).getActionView();

        if (searchView != null) {
            final Menu menu_block = menu;
            searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {

                @Override
                public boolean onQueryTextSubmit(String query) {
                    // collapse the view ?
                    menu_block.findItem(R.id.action_product_search).collapseActionView();
                    return false;
                }

                @Override
                public boolean onQueryTextChange(String newText) {
                    // search goes here !!
                    // listAdapter.getFilter().filter(query);
                    return false;
                }
            });
            Log.i("sales module", "SearchView OK"); …
Run Code Online (Sandbox Code Playgroud)

android android-layout searchview

14
推荐指数
1
解决办法
9404
查看次数

android.support.v4.widget.SearchViewCompat示例?

我试图使用SearchViewCompatActionBarSherlock在API 8应用.

public boolean onCreateOptionsMenu(Menu menu) {
    MenuItem item = menu.add("Search")
        .setIcon(isLight ? R.drawable.ic_search_inverse : R.drawable.ic_search)
        .setActionView(R.layout.collapsible_edittext);
    item.setShowAsAction(
        MenuItem.SHOW_AS_ACTION_ALWAYS | 
        MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);

    // To use SearchViewCompat, I need to add it to the Menu item as well:
    View searchView = SearchViewCompat.newSearchView(this);
    // ...
    SearchViewCompat.setOnQueryTextListener(...);
    // ...
    item.setActionView(searchView);
Run Code Online (Sandbox Code Playgroud)

请注意,顶部和底部代码都需要调用setActionView().这是否意味着无法进行搜索?

android searchview android-search

13
推荐指数
2
解决办法
6007
查看次数

如何在SearchView/Widget调用的搜索过程中传递额外的变量?

我在操作栏中成功使用搜索小部件按照本指南执行搜索.搜索很好,但我想知道如何在搜索上传递其他变量.我可以覆盖相同的指南状态onSearchRequested(),但这似乎不适用于搜索小部件.

  • 覆盖问题:

    @Override
    public boolean onSearchRequested() {    
        Bundle appData = new Bundle();
        appData.putString("KEY", "VALUE");
        startSearch(null, false, appData, false);
        return true;
    }
    
    Run Code Online (Sandbox Code Playgroud)
  • 在我的活动类中获取包:

    protected void onCreate(Bundle savedInstanceState) {
        // ...
        Intent intent = getIntent();
        Bundle appData = intent.getBundleExtra(SearchManager.APP_DATA);
        String value = appData.getString("KEY");
        Log.d("VALUE", value);
        // ...
    }
    
    Run Code Online (Sandbox Code Playgroud)

我的应用程序在创建搜索类时崩溃,因为appData它总是如此null.

注意

onSearchRequested() 调用,但是捆绑包不适合我的onCreate()方法.

来自传递意图的所有额外内容都是{user_query=my-query, query=my-query}.

android searchview

13
推荐指数
1
解决办法
4480
查看次数

Honeycomb 3.2上的android searchview setOnActionExpandListener

我正在为Android 3.2及更高版本开发应用程序android-support-v4.OnActionExpandListener当扩展操作栏中的SearchView以及何时折叠时,我需要实现"拦截".我的Android 4.0及更高版本的代码没问题,但对于3.2没有.

menu.xml文件

<item android:id="@+id/menu_search"
    android:title="@string/menu_search"
    android:icon="@android:drawable/ic_menu_search"
    android:showAsAction="collapseActionView|always"
    android:actionViewClass="android.widget.SearchView" />
Run Code Online (Sandbox Code Playgroud)

MyActivity.java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.reader, menu);

    final MenuItem searchMI = menu.findItem(R.id.menu_search);
    if(searchView == null) {
        //searchView = (SearchView) searchMI.getActionView();
        searchView = (SearchView) MenuItemCompat.getActionView(searchMI);
        searchView.setOnQueryTextListener(this);
        searchView.setOnSuggestionListener(this);
        searchView.setOnCloseListener(new OnCloseListener() {

            @Override
            public boolean onClose() {
                //some code
                return false;
            }
        });
    }


    int currentapiVersion = android.os.Build.VERSION.SDK_INT;
    if (currentapiVersion <= android.os.Build.VERSION_CODES.HONEYCOMB_MR2) {
        MenuItemCompat.setShowAsAction(searchMI, MenuItemCompat.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW | MenuItemCompat.SHOW_AS_ACTION_ALWAYS);
        MenuItemCompat.setOnActionExpandListener(searchMI, new OnActionExpandListener() {

            /* (non-Javadoc)
             * @see android.support.v4.view.MenuItemCompat.OnActionExpandListener#onMenuItemActionExpand(android.view.MenuItem) …
Run Code Online (Sandbox Code Playgroud)

java android android-3.0-honeycomb android-actionbar searchview

13
推荐指数
3
解决办法
1万
查看次数

将SearchView与AppCompat一起使用时出现空指针异常

今天我花时间迁移到AppCompat库.除了我的SearchView,我已经成功设置了所有内容.

之前,它运行正常,但现在我nullPointerException在使用代码时不断获取

searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));

我到处寻找尝试为我的问题找到解决方案,但我找不到任何地方(我试过的那些不起作用).

任何指导都将受到赞赏,ty.

这是我打电话的地方:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.main, menu);

    MenuItem searchItem = menu.findItem(R.id.search);

    SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);

    SearchView searchView = (SearchView) MenuItemCompat
            .getActionView(searchItem);

    searchView.setSearchableInfo(searchManager
            .getSearchableInfo(getComponentName()));



    return super.onCreateOptionsMenu(menu);
}
Run Code Online (Sandbox Code Playgroud)

这是菜单XML文件:

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:compat="http://schemas.android.com/apk/res-auto" 
xmlns:app="http://schemas.android.com/apk/res/android" >>

<item
    android:id="@+id/about"
    android:orderInCategory="3"
    android:showAsAction="never"
    android:title="@string/about"/>
<item
    android:id="@+id/rate"
    android:orderInCategory="2"
    android:showAsAction="never"
    android:title="@string/rate"/>
<item
    android:id="@+id/search"
    android:icon="@android:drawable/ic_menu_search"
    android:orderInCategory="1"
    app:actionViewClass="android.support.v7.widget.SearchView"
    compat:showAsAction="ifRoom|collapseActionView">
</item>
Run Code Online (Sandbox Code Playgroud)

表现:

    <activity
        android:name="com.stack.overflow.MainActivity"
        android:label="@string/app_name"
        android:launchMode="singleTop"
        android:theme="@style/Theme.AppCompat" >
        <meta-data
            android:name="android.app.default_searchable"
            android:resource="@xml/searchable" />
        <intent-filter>
            <action android:name="android.intent.action.MAIN" />
            <action android:name="android.intent.action.SEARCH" />
            <category android:name="android.intent.category.LAUNCHER" /> …
Run Code Online (Sandbox Code Playgroud)

android nullpointerexception android-appcompat searchview

13
推荐指数
2
解决办法
4410
查看次数

何时关闭SimpleCursorAdapter中使用的Cursor

我正在使用SimpleCursorAdapter在ListView中显示结果,但由于我必须在搜索期间(使用SearchView小部件)多次查询我的数据库,因此我担心光标可能会被打开.

这是我查询我的数据库并在ListView中显示结果的方法:

class SearchCustomers extends AsyncTask<String,Void,Cursor>{

        @Override
        protected Cursor doInBackground(String... params) {         
            //get the query
            String query=params[0].toLowerCase(Locale.getDefault());
            Cursor cursor=mDB.searchCustomersByName((query != null ? query : "@@@@"));
            return cursor;

        }

        @Override
        protected void onPostExecute(Cursor result) {           

            if (result != null) {

                String[] from = new String[] { QuickOrderDB.ID,
                        QuickOrderDB.NAME,
                        QuickOrderDB.ADDRESS,
                        QuickOrderDB.PHONE_NUMBER };

                int[] to = new int[] { R.id.customerIDTextView,
                        R.id.customerNameTextView,R.id.customerAddressTextView ,
                        R.id.customerPhoneTextView };

                SimpleCursorAdapter cursorAdapter = new SimpleCursorAdapter(SearchCustomersActivity.this,
                        R.layout.results_customer_item, result, from, to);
                mResultsListView.setAdapter(cursorAdapter);                 

            }
        }           

    }   
Run Code Online (Sandbox Code Playgroud)

我已经尝试了很多东西来关闭光标,但即使我mResultsListView.setAdapter(cursorAdapter);在结果总是相同之后关闭它:一个空的ListView.

我已经看到了几个问题,其中提到光标将自动关闭,但我想确保这是真的. …

android simplecursoradapter android-cursor searchview

13
推荐指数
1
解决办法
4805
查看次数

Android SearchView OnFocusChangeListener:根本不调用onFocusChange

我有一个SearchView活动; 当用户执行搜索时,Fragment包含搜索结果的内容将添加到同一个Activity中.

现在,我想要的是,当SearchView点击(因此它的焦点,和用户类型有),Fragment已经显示(containig搜索结果)应该变得暗淡/模糊.

于是,我就设置OnFocusChangedListenerSearchViewonActivityCreated生命周期回调方法Fragment,但它似乎并没有在所有被调用.

final Activity myActivity = getActivity();
        Log.i(TAG, "myActivity>"+myActivity.toString());//check
        SearchView mySearchView = (SearchView) myActivity.findViewById(R.id.searchActivity_searchView);
        Log.i(TAG, "mySearchView>"+mySearchView.toString());//check
        mySearchView.setOnFocusChangeListener(new OnFocusChangeListener() {
            @SuppressLint("NewApi")
            @Override
            public void onFocusChange(View v, boolean hasFocus) {
                Log.i(TAG, "onFocusChange OF OnFocusChangeListener IN SearchResultsFragment CALLED.");
                if (hasFocus) {
                    myActivity.getWindow().setDimAmount(1.0f);
                }
            }
        });
Run Code Online (Sandbox Code Playgroud)

我错过了什么吗?当用户点击并因此激活其中的搜索查询时,我该怎么做才能获得onFocusChanged被叫SearchView

注意:如果需要完整的SSCCE代码,请在评论中提问,我会发布.

android focus listener android-fragments searchview

13
推荐指数
1
解决办法
4855
查看次数

在Fragment中添加SearchView

尝试在操作栏中包含搜索查看.为此,我做了以下事情:

在菜单文件夹中创建了MenuSearch.xml,如下所示:

<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
   <item
    android:id="@+id/action_search"
    android:actionViewClass="Android.Support.V7.Widget.SearchView"
    android:icon="@android:drawable/ic_menu_search"
    android:showAsAction="always"
    android:title="Search"/>

</menu>
Run Code Online (Sandbox Code Playgroud)

包含片段中的OnCreateOptionsMenu方法:

public override void OnCreateOptionsMenu(IMenu menu, MenuInflater inflater)
    {
        inflater.Inflate(Resource.Menu.MenuSearch, menu);
        base.OnCreateOptionsMenu(menu, inflater);
        var searchManager = (SearchManager) this.Activity.GetSystemService(Context.SearchService);
        searchView = (SearchView) (menu.FindItem(Resource.Id.action_search).ActionView);
        searchView.SetSearchableInfo(searchManager.GetSearchableInfo(Activity.ComponentName));

    }
Run Code Online (Sandbox Code Playgroud)

我已经设置HasOptionsMenu = true;了片段的创建.

使用上面的代码,我在行中得到空指针searchView.SetSearchableInfo....不知道为什么会发生这种情况,尽管一切似乎都是正确的.

基于解决类似问题的一些建议,我还尝试了searchview的以下选项.

        var item = menu.FindItem (Resource.Id.action_search);
        var searchItem = MenuItemCompat.GetActionView(item);
        searchView = searchItem.JavaCast<Android.Support.V7.Widget.SearchView>();
        searchView.SetSearchableInfo(searchManager.GetSearchableInfo(Activity.ComponentName));
Run Code Online (Sandbox Code Playgroud)

但同样,我将searchView视为null.

现在我已经尝试了可能的选项,我对于为什么searchview变为null无能为力.

任何帮助深表感谢.

android searchview xamarin

13
推荐指数
2
解决办法
3万
查看次数

当我按下一次时,SearchView onQueryTextSubmit运行两次

我正在编写一个搜索函数来访问库网站.当提交查询字符​​串时,程序启动一个新线程来解析Web上的信息.它在AVD上正常运行,但我的HTC DesireHD反复显示搜索结果(如果实际结果是1. 2. 3.它看起来是1. 2. 3. 1. 2. 3.).我在onQueryTextSubmit方法中设置了断点,发现方法onQueryTextSubmit()中的代码被执行了两次.这是我的代码:

sv.setOnQueryTextListener(new OnQueryTextListener(){

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

        @Override
        public boolean onQueryTextSubmit(String query) {
            list.clear();
            String str = null;
            try {//encoding Chinese character
                str = new String(query
                        .trim().getBytes(), "ISO-8859-1");
                } catch (UnsupportedEncodingException e) {
                    e.printStackTrace();
                }
            SearchPost sp = new SearchPost(SEARCH_URL + str);
            new Thread(sp).start(); 
            return false;
        }
    });

protected class SearchPost implements Runnable{
    public String url = "";
    SearchPost(String urls){
        url = urls;
    }
    public SearchPost() { …
Run Code Online (Sandbox Code Playgroud)

multithreading searchview

12
推荐指数
2
解决办法
4109
查看次数

在Android中的SearchView自定义字体

我一直在尝试将自定义字体设置为android.support.v7.widget.SearchView查询提示和View.I中输入的文本.我尝试通过创建TypeFace对象动态地将字体从assests设置为searchView,但问题是"SearchView不包含一个setTypeface(Typeface tf)方法." 我确实尝试过自定义的SearchView类但找不到.

 private void setFont(String font1, String font2, String font3)
 {
        Typeface tf = null;

        tf = UiUtil.changeFont(MainActivity.this, font1);
        btn1.setTypeface(tf);

        tf = UiUtil.changeFont(MainActivity.this, font2);
        btn2.setTypeface(tf);

        tf = UiUtil.changeFont(MainActivity.this, font3);
        btn3.setTypeface(tf);

         tf = UiUtil.changeFont(MainActivity.this, font3);
        // no set typeface method..

    }
Run Code Online (Sandbox Code Playgroud)

fonts android searchview android-typeface

12
推荐指数
2
解决办法
5210
查看次数