[英]Target action bar item from navigation drawer
I am currently working on an app that i implemented a toolbar and a search functionality on the toolbar with a searchview to filter list views which is working fine. 我目前正在开发一个应用程序,该应用程序实现了工具栏和工具栏上的搜索功能,并带有一个searchview来过滤列表视图,效果很好。 I also have a navigation drawer whereby i also want one of its items to do exactly what the search functionality is doing on the toolbar.
我也有一个导航抽屉,我也希望它的其中一项能够完全执行工具栏上搜索功能的功能。 How do implement an intent to lead me to
SearchView
on toolbar when search
item is clicked from navigation drawer. 从导航抽屉中单击
search
项时,如何实现将我引导到工具栏上的SearchView
的意图。
menu_main for toolbar 工具栏的menu_main
<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">
<item
android:id="@+id/viewMode"
android:orderInCategory="100"
app:showAsAction="never"
android:icon="@drawable/ic_view_compact_black_24dp"
android:title="@string/view" />
<item
// my search functionality
android:id="@+id/search"
android:orderInCategory="100"
app:actionViewClass= "android.support.v7.widget.SearchView"
app:showAsAction="ifRoom"
android:icon="@drawable/ic_search"
android:title="@string/search" />
</menu>
activity_navdrawer activity_navdrawer
<?xml version="1.0" encoding="utf-8"?>
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<group android:checkableBehavior="single">
<item
android:id="@+id/nav_notes"
android:icon="@drawable/ic_note_add_black_24dp"
android:title="@string/first_layout" />
<item
// search functionality which should lead me to searchview on toolbar
android:id="@+id/nav_search"
android:icon="@drawable/ic_search_black_24dp"
android:title="@string/third_layout" />
</group>
<item android:title="@string/app_communicate">
<menu>
<item
android:id="@+id/nav_share"
android:icon="@drawable/ic_share_black_24dp"
android:title="@string/app_share" />
<item
android:id="@+id/nav_send"
android:icon="@drawable/ic_email_black_24dp"
android:title="@string/app_send" />
</menu>
</item>
</menu>
from main activity 来自主要活动
public boolean onNavigationItemSelected(MenuItem item) {
// Handling navigation view item clicks here.
int id = item.getItemId();
if(id == R.id.nav_notes) {
Intent noteIntent = new Intent(this, MainActivity.class);
startActivity(noteIntent);
} else if(id == R.id.nav_search) {
MenuItem searchMenuItem = mOptionsMenu.findItem(R.id.search);
searchMenuItem.expandActionView();
// what should i implement here?
}
DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
drawer.closeDrawer(GravityCompat.START);
return true;
}
@Override
public boolean onCreateOptionsMenu(`final` Menu menu) {
mOptionsMenu = menu;
MenuInflater inflater = getMenuInflater();
inflater.inflate(R.menu.menu_main, menu);
SearchManager searchManager =
(SearchManager) getSystemService(Context.SEARCH_SERVICE);
searchView = (SearchView) menu.findItem(R.id.search).getActionView();
searchView.setSearchableInfo(searchManager.getSearchableInfo(getComponentName()));
searchView.setMaxWidth(Integer.MAX_VALUE);
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
ArrayAdapter<Note> arrayAdapter = (ArrayAdapter<Note>) mListNotes.getAdapter();
arrayAdapter.getFilter().filter(newText);
return false;
}
});
return true;
}
Try the following code below: 请尝试以下代码:
private Menu mOptionsMenu;
...
@Override
public boolean onCreateOptionsMenu(final Menu menu) {
mOptionsMenu = menu;
...
}
...
public boolean onNavigationItemSelected(MenuItem item) {
...
} else if(id == R.id.nav_search) {
MenuItem searchMenuItem = mOptionsMenu.findItem(R.id.menu_search);
searchMenuItem.expandActionView();
}
...
Add <category android:name="android.intent.category.DEFAULT" />
to your search activity in manifest. 将
<category android:name="android.intent.category.DEFAULT" />
到清单中的搜索活动中。 Then do this: 然后执行以下操作:
else if(id == R.id.nav_search) {
startActivity(new Intent(Intent.ACTION_SEARCH));
}
If this works, courtesy - Start Activity Using Custom Action 如果可行,则礼貌- 使用“自定义操作”开始活动
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.