Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/214.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 如何使用ActionBarSherlock创建搜索对话框?(非搜索)_Android_Actionbarsherlock_Android Actionbar - Fatal编程技术网

Android 如何使用ActionBarSherlock创建搜索对话框?(非搜索)

Android 如何使用ActionBarSherlock创建搜索对话框?(非搜索),android,actionbarsherlock,android-actionbar,Android,Actionbarsherlock,Android Actionbar,你好! 他在上面做了所有的事情,但是使用了ActionbarSherlock及其实现SearchView,但是请求不会发送到SearchActivity。 你们谁知道会出什么问题。只有当你按下键盘上的“回车”按钮时,请求才会被发送,我想让它像“实时搜索”一样工作,一旦开始输入,立即开始搜索 AndroidManifest.xml <?xml version="1.0" encoding="utf-8"?> <manifest xmlns:android="http:/

你好! 他在上面做了所有的事情,但是使用了ActionbarSherlock及其实现SearchView,但是请求不会发送到SearchActivity。 你们谁知道会出什么问题。只有当你按下键盘上的“回车”按钮时,请求才会被发送,我想让它像“实时搜索”一样工作,一旦开始输入,立即开始搜索

AndroidManifest.xml

 <?xml version="1.0" encoding="utf-8"?>
    <manifest xmlns:android="http://schemas.android.com/apk/res/android"
              package="ru.ex.Interface"
              android:versionCode="45"
              android:versionName="2.2.1b"
              android:installLocation="auto"
            >

        <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="15"/>

        <uses-permission android:name="android.permission.INTERNET"/>
        <uses-permission android:name="android.permission.ACCESS_NETWORK_STATE"/>




        <application
                android:label="@string/app_name"
                android:icon="@drawable/ic_launcher"
                android:hardwareAccelerated="true"
                android:theme="@style/Theme.Sherlock.Light.Custom"

                >


            <!-- enable the search dialog to send searches to SearchableActivity -->
            <meta-data android:name="android.app.default_searchable"
                       android:value=".SearchActivity"/>

            <activity
                    android:name=".SearchActivity"
                    android:screenOrientation="portrait"
                    android:parentActivityName=".MainFragmentActivity"
                    android:launchMode="singleTop"
                    >
                <!-- This intent-filter identifies this activity as "searchable" -->

                <intent-filter>
                    <action android:name="android.intent.action.SEARCH" />

                    <category android:name="android.intent.category.DEFAULT" />
                </intent-filter>

                <!-- This metadata entry provides further configuration details for searches -->
                <!-- that are handled by this activity. -->

                <meta-data
                        android:name="android.app.searchable"
                        android:resource="@xml/search_config" />

            </activity>

            <activity
                    android:name=".MainFragmentActivity"
                    android:screenOrientation="portrait"
                    android:launchMode="singleTask"
                    >

                <intent-filter>
                    <action android:name="android.intent.action.MAIN"/>
                    <category android:name="android.intent.category.LAUNCHER"/>
                </intent-filter>

            </activity>

        </application>


    </manifest> 
SearchActivity.java

public class SearchActivity extends CustomMenuFragmentActivity
{


    @Override
    public void onCreate(Bundle save)
    {
        super.onCreate(save);
        setContentView(R.layout.search_page);
        handleIntent(getIntent());
    }

    private void handleIntent(Intent intent)
    {
        if (Intent.ACTION_SEARCH.equals(intent.getAction()))
        {
            String query = intent.getStringExtra(SearchManager.QUERY);
            goSearch(query);
        }
    }


    @Override
    public void onNewIntent(Intent intent)
    {
        setIntent(intent);
        handleIntent(intent);
    }

    private void goSearch(final String s)
    {}
}

要在用户键入时连续搜索,请设置查询文本侦听器

SearchView.OnQueryTextListener queryTextListener=新建SearchView.OnQueryTextListener() { 公共布尔onQueryTextChange(字符串newText) { goSearch(新文本); 返回true; }

    public boolean onQueryTextSubmit(String query) 
    {
        goSearch(query);
        return true;
    }
};
searchView.setOnQueryTextListener(queryTextListener);

但是,您的应用程序似乎没有为这种连续搜索设置。您的MainActivity菜单中有SearchView,但启动SearchActivity以显示结果。相反,您的SearchView菜单项需要位于显示结果的同一活动中,并且您的goSearch()方法应在找到新结果时更新活动的内容。

这是我最近编写的一个项目中的代码片段,该项目具有
列表视图的搜索功能,旁边有
ActionBarSherlock

// Create a new search view on the ActionBar
SearchView searchView = new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext());
// Set the hint inside the search box
searchView.setQueryHint("Search...");
// When the user inputs text, filter the FAQs
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
    public boolean onQueryTextChange(String newText) {
        // adapter.getFilter().filter(newText);
        return true;
    }

    public boolean onQueryTextSubmit(String query) {
        // adapter.getFilter().filter(query);
        return true;
    }
});
// Create a "search" menu option to search the list
MenuItem item = menu.add(Menu.NONE, 0, Menu.NONE, R.string.search).setIcon(R.drawable.ic_action_search).setActionView(searchView);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);
只需将注释的
适配器.getFilter()
替换为您需要的内容即可

// Create a new search view on the ActionBar
SearchView searchView = new SearchView(getSherlockActivity().getSupportActionBar().getThemedContext());
// Set the hint inside the search box
searchView.setQueryHint("Search...");
// When the user inputs text, filter the FAQs
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
    public boolean onQueryTextChange(String newText) {
        // adapter.getFilter().filter(newText);
        return true;
    }

    public boolean onQueryTextSubmit(String query) {
        // adapter.getFilter().filter(query);
        return true;
    }
});
// Create a "search" menu option to search the list
MenuItem item = menu.add(Menu.NONE, 0, Menu.NONE, R.string.search).setIcon(R.drawable.ic_action_search).setActionView(searchView);
item.setShowAsAction(MenuItem.SHOW_AS_ACTION_IF_ROOM | MenuItem.SHOW_AS_ACTION_COLLAPSE_ACTION_VIEW);