Android ActivityGroup菜单问题

xge*_*86x 6 android menu android-activity

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

好吧,问题是当我按下菜单键时,组中的第二个活动不显示菜单.第一个活动正常显示菜单.

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

我在子活动中有这个代码:

    @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);
}
Run Code Online (Sandbox Code Playgroud)

bra*_*ack 7

处理此问题的另一个好方法是使用ActivityGroup的LocalActivityManager.获取本地活动管理器,获取当前活动,并执行该活动的适当方法:

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);
}
Run Code Online (Sandbox Code Playgroud)

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


Mac*_*rse 0

检查这个线程。

菜单可以在父活动中处理,但可以在子活动中创建