Android Fragment的选项菜单未显示

3

我有一个片段想要在活动的容器中显示。问题是该片段的菜单选项没有显示出来。 这里是我添加片段的活动代码:我尝试了 .add 和 .replace 但两者都有同样的结果:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    GridFragment gridFragment = new GridFragment();

    getSupportFragmentManager().beginTransaction()
            .add(R.id.container, gridFragment, TAG_GRID_FRAGMENT)
            .commit();
}

活动的XML文件:
<FrameLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/container" 
android:layout_height="match_parent"
android:layout_width="match_parent"
tools:context="appfactory.app.movies.ui.MainActivity"
app:sharedElementTransitions="true" />

这是片段的onCreate:

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

fragment的onCreateOptionsMenu:

    @Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    menu.clear();
    inflater.inflate(R.menu.main_fragment, menu);
    super.onCreateOptionsMenu(menu, inflater);
}

碎片的菜单只会在我在主xml中硬编码该碎片时显示出来,这不是我想要的。感谢任何建议。

同样的设置对我也起作用。如果你试图发布一个具有该行为的简单项目,那就太好了(我认为你会发现自己无法做到这一点)。 - azizbekian
1个回答

0

在调用菜单的 clear()inflate() 方法之前,先调用 super.onCreateOptionsMenu(menu, inflater)

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    super.onCreateOptionsMenu(menu, inflater);    
    menu.clear();
    inflater.inflate(R.menu.main_fragment, menu);

}

@fullMoon:如果我的解决方案解决了你的问题,请给我点赞并将其标记为已接受的答案。谢谢~ - Ferdous Ahamed

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接