Android 安卓系统-不同的菜单项和表格布局

Android 安卓系统-不同的菜单项和表格布局,android,menuitem,android-tablayout,Android,Menuitem,Android Tablayout,我的应用程序中有一个TabLayout。我希望每个片段都有自己的菜单项。我怎么能做到?这是我的代码: protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); setToolbar(); setTabLayout(); } public static class Placehol

我的应用程序中有一个
TabLayout
。我希望每个
片段
都有自己的
菜单项
。我怎么能做到?这是我的代码:

protected void onCreate(Bundle savedInstanceState) {

    super.onCreate(savedInstanceState);
    setContentView(R.layout.main);

    setToolbar();
    setTabLayout();
}

public static class PlaceholderFragment extends Fragment {

    private static final String ARG_SECTION_NUMBER = "section_number";

    public PlaceholderFragment() {
    }

    public static PlaceholderFragment newInstance(int sectionNumber) {

        PlaceholderFragment fragment = new PlaceholderFragment();
        Bundle args = new Bundle();
        args.putInt(ARG_SECTION_NUMBER, sectionNumber);
        fragment.setArguments(args);

        return fragment;
    }

    @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {

        View rootView = null;

        switch(getArguments().getInt(ARG_SECTION_NUMBER)) {
            case 1:

                rootView = inflater.inflate(R.layout.main_list, container, false);
                ...
                break;

            case 2:
                rootView = inflater.inflate(R.layout.activity_maps, container, false);
                ...
                break;
        }

        return rootView;
    }
}

public class SectionsPagerAdapter extends FragmentPagerAdapter {

    public SectionsPagerAdapter(FragmentManager fm) {
        super(fm);
    }

    @Override
    public Fragment getItem(int position) {

        return PlaceholderFragment.newInstance(position + 1);
    }

    @Override
    public int getCount() {
        return 2;
    }

    @Override
    public CharSequence getPageTitle(int position) {
        switch (position) {
            case 0:
                return getString(R.string.list);
            case 1:
                return getString(R.string.map);
        }
        return null;
    }
}

您需要使用
invalidateOptionsMenu()
onPrepareOptionsMenu()
。您应该阅读文档

仔细看看这一点:

在Android 3.0+上调用
invalidateOptions菜单()
将调用
onPrepareOptions菜单()
。一个
菜单
被传递给该方法,您希望使用该对象对菜单进行更改,无论是添加还是删除菜单项

对于
onprepareOptions菜单()
,请记住这一点:

必须返回true才能显示菜单;如果返回false,则不会显示