Android 如何从覆盖活动的片段中展开菜单
我有一份残缺的菜单,但它并没有按预期显示出来。它可能被活动工具栏覆盖 如何从片段菜单中获取要显示的菜单?现在显示的是活动 片段菜单的完整代码Android 如何从覆盖活动的片段中展开菜单,android,android-fragments,Android,Android Fragments,我有一份残缺的菜单,但它并没有按预期显示出来。它可能被活动工具栏覆盖 如何从片段菜单中获取要显示的菜单?现在显示的是活动 片段菜单的完整代码 有一个活动BottomNavigation,它可以在选择的底部导航栏以及菜单和标题上调用5个片段。我有一个叫做搜索的片段,它有自己的菜单。如何为该菜单充气?您可能需要覆盖框架中的OnCreateOptions菜单。此外,在创建片段时,您可能必须将片段中的HasOptions菜单设置为true,以便让活动知道此片段有自己的菜单: @Override publ
有一个活动BottomNavigation,它可以在选择的底部导航栏以及菜单和标题上调用5个片段。我有一个叫做搜索的片段,它有自己的菜单。如何为该菜单充气?您可能需要覆盖框架中的OnCreateOptions菜单。此外,在创建片段时,您可能必须将片段中的HasOptions菜单设置为true,以便让活动知道此片段有自己的菜单:
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Your menu needs to be added here
super.onCreateOptionsMenu(menu, inflater);
}
在执行此操作之前,您的菜单将不会膨胀,并且您的活动永远不会隐藏另一个菜单。。所以试试看 没问题。。很高兴它帮助了你!!
public class BottomNavigation extends AppCompatActivity {
private static Fragment fragment = new Fragment();
private TvShow tvShow = new TvShow();
private FilmShow filmShow = new FilmShow();
private FavoritShow favoritShow = new FavoritShow();
private FilmFavoritShow filmFavoritShow = new FilmFavoritShow();
private Search search = new Search();
public static boolean isDeletedTv = false;
public static boolean isDeletedFilm = false;
private String title;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.bottom_navigation);
BottomNavigationView navView = findViewById(R.id.nav_view);
Toolbar toolbar = findViewById(R.id.toolbar);
// placing toolbar in place of action bar
setSupportActionBar(toolbar);
navView.setSelectedItemId(R.id.navigation_tv);
toolbar.setVisibility(View.VISIBLE);
getSupportFragmentManager().beginTransaction().replace(R.id.frame_container_bottomnav,
tvShow).commit();
fragment = tvShow;
title = "Tv";
if (isDeletedTv) {
FavoritShow FavoritTv = new FavoritShow();
navView.setSelectedItemId(R.id.navigation_favorit_tv);
getSupportFragmentManager().beginTransaction().replace(R.id.frame_container_bottomnav,
FavoritTv).commit();
fragment = FavoritTv;
title = "Favorit";
isDeletedTv = false;
} else if (isDeletedFilm) {
FilmFavoritShow FavoritFilm = new FilmFavoritShow();
navView.setSelectedItemId(R.id.navigation_favorit_film);
getSupportFragmentManager().beginTransaction().replace(R.id.frame_container_bottomnav,
FavoritFilm).commit();
fragment = FavoritFilm;
title = "Favorit Film";
isDeletedFilm = false;
}
BottomNavigationView.OnNavigationItemSelectedListener navigationItemSelected;
navigationItemSelected = menuItem -> {
switch (menuItem.getItemId()) {
case R.id.navigation_tv:
toolbar.setVisibility(View.VISIBLE);
getSupportFragmentManager().beginTransaction().replace(R.id.frame_container_bottomnav,
tvShow).commit();
fragment = tvShow;
title = "Tv";
break;
case R.id.search_tv:
toolbar.setVisibility(View.GONE);
getSupportFragmentManager().beginTransaction().replace(R.id.frame_container_bottomnav,
search).commit();
fragment = search;
title = "Search Tv";
break;
case R.id.navigation_film:
toolbar.setVisibility(View.VISIBLE);
getSupportFragmentManager().beginTransaction().replace(R.id.frame_container_bottomnav,
filmShow).commit();
fragment = filmShow;
title = "Film";
break;
case R.id.navigation_favorit_tv:
toolbar.setVisibility(View.VISIBLE);
getSupportFragmentManager().beginTransaction().replace(R.id.frame_container_bottomnav,
favoritShow).commit();
fragment = favoritShow;
title = "Favorit";
break;
case R.id.navigation_favorit_film:
toolbar.setVisibility(View.VISIBLE);
getSupportFragmentManager().beginTransaction().replace(R.id.frame_container_bottomnav,
filmFavoritShow).commit();
fragment = filmFavoritShow;
title = "Favorit Film";
break;
}
toolbar.setTitle(title);
return true;
};
navView.setOnNavigationItemSelectedListener(navigationItemSelected);
if (savedInstanceState == null) {
getSupportFragmentManager().beginTransaction().replace(R.id.frame_container_bottomnav,
fragment).commit();
} else {
fragment = getSupportFragmentManager().getFragment(savedInstanceState, "fragment");
}
}
@Override
protected void onSaveInstanceState(Bundle outState) {
if (fragment.isAdded()) {
getSupportFragmentManager().putFragment(outState, "fragment", fragment);
}
super.onSaveInstanceState(outState);
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
getMenuInflater().inflate(R.menu.menu, menu);
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (item.getItemId() == R.id.action_change_settings) {
Intent intent = new Intent(Settings.ACTION_LOCALE_SETTINGS);
startActivity(intent);
}
return super.onOptionsItemSelected(item);
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setHasOptionsMenu(true);
}
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
// Your menu needs to be added here
super.onCreateOptionsMenu(menu, inflater);
}