如何从Fragment更新工具栏选项

时间:2016-02-09 22:41:29

标签: android android-layout android-fragments

我在活动中有一个tablayout,navigationdrawer和工具栏。 向viewpager添加了3个片段,并将viewpager添加到tablayout: 我活动的代码段:

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

    viewPager = (ViewPager) findViewById(R.id.viewpager);
    setupViewPager(viewPager);

    tabLayout = (TabLayout) findViewById(R.id.tabs);
    tabLayout.setupWithViewPager(viewPager);

现在在每个片段中,我必须在工具栏中显示不同的选项: 所以我试着像我这样访问片段中的工具栏:

public View onCreateView(LayoutInflater inflater,
        @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        _context = getActivity();
    mainView = inflater.inflate(R.layout.frag1, container, false);

    mToolbar =(Toolbar) mainView.findViewById(R.id.app_bar);
    mToolbar.setTitle("");
    toolbarTitle = (TextView) getActivity().findViewById(R.id.toolbar_title);
    toolbarTitle.setText("Fragment1");
    toolbarTitle.setSelected(true);
    AppCompatActivity activity = (AppCompatActivity) getActivity();
    activity.setSupportActionBar(mToolbar);
}

在onCreateOptionsMenu(菜单菜单,MenuInflater inflater)中夸大了所需的菜单 但不要按照工具栏中的菜单进行充气。我们如何更改Fragment中的工具栏选项。

1 个答案:

答案 0 :(得分:1)

这对我有用。这就是我在onCreate中所拥有的一切。 (可刷新是我自己的界面)。

public class SummaryFragment extends Fragment implements Refreshable {

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

这就是我给菜单充气的地方。

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.save:
        {
            File csvFile = saveResults();
etc...

它现在已经消失,但我的MainActivity中有一个不同的菜单,当我的摘要标签处于活动状态时,这两个菜单都存在。