У меня есть действие с панелью инструментов, на которой есть значок поиска. Это упражнение имеет вид нижней навигации с тремя вкладками. Каждый фрагмент в основном имеет только представление списка, а адаптер для этого имеет фильтр. Как я должен вызывать функцию фильтра адаптера из моей основной деятельности? Я открываю фрагменты, подобные этому, в onCreate (пока они все являются одним и тем же фрагментом):
BottomNavigationView navigation = findViewById(R.id.bottomNavigation);
final FragmentManager fragmentManager = getSupportFragmentManager();
// define your fragments here
final Fragment fragment1 = new VideoListFragment();
final Fragment fragment2 = new VideoListFragment();
final Fragment fragment3 = new VideoListFragment();
// handle navigation selection
navigation.setOnNavigationItemSelectedListener(
new BottomNavigationView.OnNavigationItemSelectedListener() {
@Override
public boolean onNavigationItemSelected(@NonNull MenuItem item) {
Fragment fragment;
switch (item.getItemId()) {
case R.id.navigation_home:
fragment = fragment1;
break;
case R.id.navigation_playlists:
fragment = fragment2;
break;
case R.id.navigation_favorites:
default:
fragment = fragment3;
break;
}
fragmentManager.beginTransaction().replace(R.id.framelayout, fragment).commit();
return true;
}
});
// Set default selection
navigation.setSelectedItemId(R.id.navigation_home);
У меня есть это в основном упражнении, чтобы получить информацию с панели инструментов:
@Override
public boolean onCreateOptionsMenu(Menu menu) {
// Inflate the menu, this adds items to the action bar if it is present.
getMenuInflater().inflate(R.menu.action_bar, menu);
MenuItem searchItem = menu.findItem(R.id.action_search);
SearchView searchVieww = (SearchView) searchItem.getActionView();
searchVieww.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
return false;
}
@Override
public boolean onQueryTextChange(String newText) {
//Somehow filter the list of the current fragment?
return false;
}
});
return true;
}