【发布时间】:2017-08-11 10:43:56
【问题描述】:
我目前正在开发一个应用程序,该应用程序在工具栏上实现了一个工具栏和一个搜索功能,并带有一个搜索视图来过滤运行正常的列表视图。
我还有一个导航抽屉,我还希望它的一个项目能够完全按照工具栏上的搜索功能所做的工作。当从导航抽屉中单击searchitem 时,如何实现将我引导至工具栏上的SearchView的意图。
工具栏的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
<?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>
来自主要活动
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;
}
【问题讨论】: