Android:根据所选 fragment 更改菜单

标签 android android-fragments

我有不同的 fragment ,但我想更改选项菜单。我希望只有“Solicitudes”有它

The fragment that I want to have this option

This fragment shouldn't have it

我有一个包含 main.xml 的菜单文件夹,实际上我创建了另一个没有此设置选项的 main2.xml,但我不知道如何更改它

到目前为止,这是我的代码:

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);
    Toolbar toolbar = (Toolbar) findViewById(R.id.toolbar);
    setSupportActionBar(toolbar);

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout);
    ActionBarDrawerToggle toggle = new ActionBarDrawerToggle(
            this, drawer, toolbar, R.string.navigation_drawer_open, R.string.navigation_drawer_close);
    drawer.setDrawerListener(toggle);
    toggle.syncState();

    NavigationView navigationView = (NavigationView) findViewById(R.id.nav_view);
    navigationView.setNavigationItemSelectedListener(this);

    mTitle = mDrawerTitle = getTitle();

    fragment = new History();

oncreate:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    // Inflate the menu; this adds items to the action bar if it is present.
    getMenuInflater().inflate(R.menu.main, menu);
    return true;
}

历史 fragment 的代码:

public class History extends Fragment {
public static final String ARG_HISTORY = "arg_history";

public History() {
    // Empty constructor required for fragment subclasses
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,Bundle savedInstanceState) {
    View rootView = inflater.inflate(R.layout.history, container, false);
    return rootView;
}

最佳答案

在您的 Fragment 中,您需要说明此 Fragment 控制菜单。

在您的 FragmentonCreate 中。

setHasOptionsMenu(true);

现在您可以在 Fragment 中实现以下内容以隐藏您不想要的 MenuItem

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        super.onCreateOptionsMenu(menu, inflater);
        menu.findItem(R.id.unwanted_item).setVisible(false);
    }

确保在 Fragment 中执行相反的操作,您确实需要 MenuItem

如果你想添加一个 MenuItem,它不在你的 Activity 加载的 Menu 中,请在 onCreateOptionsMenu 中执行以下操作 在你的 Fragment 中。

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

关于Android:根据所选 fragment 更改菜单,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34597334/

相关文章:

Android:内容的确切位置:\\

android - 如何处理 WebViewClient.shouldInterceptRequest() 中的 IOException

android - Action 条 Sherlock + Fragments?

android - 强制关闭 : I have created a simple app with two fragments where fragemnt A is sendind data/string to Fragment B

java - fragment 数组中 "this"上的错误第一个参数类型错误

android - 对在应用程序中使用 Fragments 感到困惑

android - 无法在android studio上运行项目

java - YUV TO RGB 结果转负值

android - 当我在上面打字时,EditText 会变大

android - 使用 FragmentTabHost 在选项卡中显示 Google map