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);
}