首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >在将一个活动切换到另一个活动时更改菜单

在将一个活动切换到另一个活动时更改菜单
EN

Stack Overflow用户
提问于 2013-03-24 21:20:21
回答 2查看 135关注 0票数 0

当活动改变时,我喜欢改变菜单。我有带activity_main.xml菜单的MainActivity.java。然后我和detail_view_menu.xml一起使用MyDetailFragment.java。MainActivity菜单在onCreateOptionsMenu of MainActivity.java中放大为

代码语言:javascript
运行
复制
@Override
public boolean onCreateOptionsMenu(Menu menu) {
    new MenuInflater(this).inflate(R.menu.activity_main, menu);
    return (super.onCreateOptionsMenu(menu));
}

它工作得很好。当点击其中一项并加载MyDetailFragment.java时,我喜欢显示detail_view_menu.xml。我是如何实现的

代码语言:javascript
运行
复制
public class MyDetailsFragment extends Fragment {


TrackerInfo trackerInfo;
public MyDetailsFragment() {    
}

@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
                         Bundle savedInstanceState) {
    // Inflate the layout for this fragment

    View view =  inflater.inflate(R.layout.my_details_fragment, container, false);  
    setHasOptionsMenu(true);
    TextView displayText = (TextView) view.findViewById(R.id.details); 
    displayText.setText(trackerInfo.getIdnumber());
    return view;
}

public void retrieveData(TrackerInfo tracker){
    trackerInfo = tracker;
}

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

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
       case R.id.track:

            return (true);

       case R.id.view_history:
            return (true);

    }

    return (super.onOptionsItemSelected(item));}}

但问题是,菜单仍然是相同的activity_main菜单,从来没有改变。可能的问题是什么?

EN

Stack Overflow用户

发布于 2013-03-24 22:01:18

您需要超级调用相同的方法。

代码语言:javascript
运行
复制
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
   inflater.inflate(R.menu.detail_view_menu, menu);
   super.onCreateOptionsMenu(menu, inflater);
}

有一次我有一个问题,当新的菜单项追加到菜单上时。所以我解决了这个问题,在添加新菜单项之前删除所有菜单项。如下所示:

代码语言:javascript
运行
复制
public static void emptyFragmentOptionsMenu(Menu menu){
        if(menu==null)return;
        for(int i=0; i < menu.size(); i++)
            menu.removeItem(menu.getItem(i).getItemId());
}

干杯,

编辑:我是如何使用方法的:

代码语言:javascript
运行
复制
 @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
       emptyFragmentOptionsMenu(menu);
       inflater.inflate(R.menu.detail_view_menu, menu);
       super.onCreateOptionsMenu(menu, inflater);
    }
票数 0
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15598961

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档