在code上我的工作,是使用工具栏
和充气一个菜单
。
下面是code
专用工具栏mToolbar;
mToolbar.inflateMenu(R.menu.chat_screen_menu);
setupMenu();
私人无效setupMenu()
{
mMenu = mToolbar.getMenu();
如果(mMenu!= NULL)
{
如果(mChatPager =空&安培;!&安培; mChatPager.getCurrentItem()大于0)
{
mMenu.setGroupVisible(R.id.menu_group_chats,真正的);
mMenu.setGroupVisible(R.id.menu_group_contacts,假);
}
其他
{
mMenu.setGroupVisible(R.id.menu_group_chats,假);
mMenu.setGroupVisible(R.id.menu_group_contacts,真正的);
mMenu.setGroupVisible(R.id.menu_group_otr_verified,假);
mMenu.setGroupVisible(R.id.menu_group_otr_unverified,假);
mMenu.setGroupVisible(R.id.menu_group_otr_off,假);
}
}
mToolbar.setOnMenuItemClickListener(新OnMenuItemClickListener()
{
..........
}
}
但现在,他们需要一个搜索在
按钮。
我设法把它,我也跟着导游这里
当我尝试写一些东西来搜索,面包我已经把测试 tool_bar
监听器
永远不会显示。
这表明监听器
不能正常工作
@覆盖
公共布尔onCreateOptionsMenu(功能菜单){
MenuInflater充气= getMenuInflater();
inflater.inflate(R.menu.chat_screen_menu,菜单);
SearchManager searchManager =(SearchManager)getSystemService(Context.SEARCH_SERVICE);
mSearchView =(搜索查看)MenuItemCompat.getActionView(menu.findItem(R.id.action_menu_search));
最后的土司面包=新吐司(MAPP);
如果(mSearchView!= NULL)
{
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setIconifiedByDefault(假);
SearchView.OnQueryTextListener queryTextListener =新SearchView.OnQueryTextListener()
{
公共布尔onQueryTextChange(字符串newText)
{
mSearchString = newText;
// doFilterAsync(mSearchString);
toast.makeText(getApplicationContext(),测试1,Toast.LENGTH_LONG).show();
返回true;
}
公共布尔onQueryTextSubmit(查询字符串)
{
mSearchString =查询;
// doFilterAsync(mSearchString);
toast.makeText(getApplicationContext(),Test2的,Toast.LENGTH_LONG).show();
返回true;
}
};
mSearchView.setOnQueryTextListener(queryTextListener);
}
返回true;
}
解决方案
您必须使用Appcompat库的。它的使用方式如下:
dashboard.xml
<项目
机器人:ID =@ + ID / ACTION_SEARCH
机器人:图标=@机器人:可绘制/ ic_menu_search
应用程序:showAsAction =总是
应用程序:actionViewClass =android.support.v7.widget.SearchView
机器人:标题=搜索/>
活动文件:
公共布尔onCreateOptionsMenu(功能菜单){
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.dashboard,菜单);
菜单项searchItem = menu.findItem(R.id.action_search);
SearchManager searchManager =(SearchManager)MainActivity.this.getSystemService(Context.SEARCH_SERVICE);
搜索查看搜索查看= NULL;
如果(searchItem!= NULL){
搜索查看=(搜索查看)searchItem.getActionView();
}
如果(搜索查看!= NULL){
searchView.setSearchableInfo(searchManager.getSearchableInfo(MainActivity.this.getComponentName()));
}
返回super.onCreateOptionsMenu(菜单);
}
清单文件:
<元数据
机器人:名称=android.app.default_searchable
机器人:值=com.apkgetter.SearchResultsActivity/>
<活动
机器人:名称=com.apkgetter.SearchResultsActivity
机器人:标签=@字符串/ APP_NAME
机器人:launchMode =singleTop>
<意向滤光器>
<作用机器人:名称=android.intent.action.SEARCH/>
&所述; /意图滤光器>
<意向滤光器>
<作用机器人:名称=android.intent.action.VIEW/>
&所述; /意图滤光器>
&所述;元数据
机器人:名称=android.app.searchable
机器人:资源=@ XML /搜索/>
< /活性GT;
搜索XML文件:
< XML版本=1.0编码=UTF-8&GT?;
<可搜索的xmlns:机器人=http://schemas.android.com/apk/res/android
机器人:提示=@字符串/ search_hint
机器人:标签=@字符串/ APP_NAME/>
而在最后,你SearchResultsActivity类code。表示了你的搜索结果。
The code on which I am working, is using a Toolbar
and inflating a menu
.
Here is the code
private Toolbar mToolbar;
mToolbar.inflateMenu(R.menu.chat_screen_menu);
setupMenu ();
private void setupMenu ()
{
mMenu = mToolbar.getMenu();
if (mMenu != null)
{
if (mChatPager != null && mChatPager.getCurrentItem() > 0)
{
mMenu.setGroupVisible(R.id.menu_group_chats, true);
mMenu.setGroupVisible(R.id.menu_group_contacts, false);
}
else
{
mMenu.setGroupVisible(R.id.menu_group_chats, false);
mMenu.setGroupVisible(R.id.menu_group_contacts, true);
mMenu.setGroupVisible(R.id.menu_group_otr_verified,false);
mMenu.setGroupVisible(R.id.menu_group_otr_unverified,false);
mMenu.setGroupVisible(R.id.menu_group_otr_off,false);
}
}
mToolbar.setOnMenuItemClickListener(new OnMenuItemClickListener ()
{
..........
}
}
But now, they require a Search
button in the tool_bar
.
I managed to put it, I followed a guide here
When I try to write something to search, the toast I had put to test the listener
never shown.
which indicates listener
is not working
@Override
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.chat_screen_menu, menu);
SearchManager searchManager = (SearchManager) getSystemService(Context.SEARCH_SERVICE);
mSearchView = (SearchView) MenuItemCompat.getActionView(menu.findItem(R.id.action_menu_search));
final Toast toast = new Toast(mApp);
if (mSearchView != null )
{
mSearchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
mSearchView.setIconifiedByDefault(false);
SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener()
{
public boolean onQueryTextChange(String newText)
{
mSearchString = newText;
//doFilterAsync(mSearchString);
toast.makeText(getApplicationContext(), "Test1", Toast.LENGTH_LONG).show();
return true;
}
public boolean onQueryTextSubmit(String query)
{
mSearchString = query;
//doFilterAsync(mSearchString);
toast.makeText(getApplicationContext(), "Test2", Toast.LENGTH_LONG).show();
return true;
}
};
mSearchView.setOnQueryTextListener(queryTextListener);
}
return true;
}
解决方案
you have to use Appcompat library for that. which is used like below:
dashboard.xml
<item
android:id="@+id/action_search"
android:icon="@android:drawable/ic_menu_search"
app:showAsAction="always"
app:actionViewClass="android.support.v7.widget.SearchView"
android:title="Search"/>
Activity file:
public boolean onCreateOptionsMenu(Menu menu) {
MenuInflater menuInflater = getMenuInflater();
menuInflater.inflate(R.menu.dashboard, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchManager searchManager = (SearchManager) MainActivity.this.getSystemService(Context.SEARCH_SERVICE);
SearchView searchView = null;
if (searchItem != null) {
searchView = (SearchView) searchItem.getActionView();
}
if (searchView != null) {
searchView.setSearchableInfo(searchManager.getSearchableInfo(MainActivity.this.getComponentName()));
}
return super.onCreateOptionsMenu(menu);
}
manifest file:
<meta-data
android:name="android.app.default_searchable"
android:value="com.apkgetter.SearchResultsActivity" />
<activity
android:name="com.apkgetter.SearchResultsActivity"
android:label="@string/app_name"
android:launchMode="singleTop" >
<intent-filter>
<action android:name="android.intent.action.SEARCH" />
</intent-filter>
<intent-filter>
<action android:name="android.intent.action.VIEW" />
</intent-filter>
<meta-data
android:name="android.app.searchable"
android:resource="@xml/searchable" />
</activity>
searchable xml file:
<?xml version="1.0" encoding="utf-8"?>
<searchable xmlns:android="http://schemas.android.com/apk/res/android"
android:hint="@string/search_hint"
android:label="@string/app_name" />
And at last, your SearchResultsActivity class code. for showing result of your search.
相关推荐
最新文章