首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓ActivityGroup菜单问题

安卓ActivityGroup菜单问题
EN

Stack Overflow用户
提问于 2010-07-01 19:47:28
回答 5查看 3.5K关注 0票数 5

我在使用ActivityGroup时有一个问题。我在ActivityGroup中有两个活动,它们都使用菜单(覆盖onCreateOptionMenu和onOptionsItemSelected)。

嗯,问题是当我按下菜单键时,组中的第二个活动没有显示菜单。第一个活动可以很好地显示菜单。

对这个问题有什么想法吗?

我在子活动中有以下代码:

代码语言:javascript
复制
    @Override
public boolean onCreateOptionsMenu(Menu menu) {
    boolean result = super.onCreateOptionsMenu(menu);
    menu.add(0, MENU_REFRESH, 0, R.string.menu_refresh).setIcon(R.drawable.ic_menu_refresh);
    return result;
}

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
    case MENU_REFRESH:
        Log.d(TAG,"REFRESH");
        refresh();
        return true;
    }
    return super.onOptionsItemSelected(item);
}
EN

回答 5

Stack Overflow用户

回答已采纳

发布于 2010-07-01 20:43:26

检查this线程。

菜单可以在父aactivity中处理,但在子activity

中创建

票数 0
EN

Stack Overflow用户

发布于 2010-10-23 04:35:36

另一种很好的处理方法是使用ActivityGroup的LocalActivityManager。获取本地活动管理器,获取当前活动,并执行该活动的适当方法:

代码语言:javascript
复制
public boolean onPrepareOptionsMenu(Menu menu) {
    //super.onPrepareOptionsMenu(menu);
    return getLocalActivityManager().getCurrentActivity()
        .onCreateOptionsMenu(menu);
}

public boolean onCreateOptionsMenu(Menu menu) {
    //super.onCreateOptionsMenu(menu);
    return getLocalActivityManager().getCurrentActivity()
        .onCreateOptionsMenu(menu);
}

public boolean onMenuItemSelected(int featureId, MenuItem item) {
    //super.onMenuItemSelected(featureId, item);
    return getLocalActivityManager().getCurrentActivity()
        .onMenuItemSelected(featureId, item);
}

注意:使用此策略时,您不能从子活动调用super.onCreateOptionsMenu -这样做会导致堆栈溢出异常。我不确定调用超类的on*方法的目的是什么,因为我省略了它们,并且没有看到任何负面结果。(...还没有)

票数 7
EN

Stack Overflow用户

发布于 2011-08-17 01:54:35

您需要覆盖活动组中的菜单方法,并调用子活动上的相应方法。请参阅本文:How to Create Options Menu on Child Activity inside an ActivityGroup

代码语言:javascript
复制
public class TestGroup extends ActivityGroup {
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);

        //start child activity
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        return getLocalActivityManager().getCurrentActivity().onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onMenuItemSelected(int featureId, MenuItem item) {
        return getLocalActivityManager().getCurrentActivity().onMenuItemSelected(featureId, item);
    }
}
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/3157406

复制
相关文章

相似问题

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