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