我在使用 ActivityGroup
时遇到一个问题。我在 ActivityGroup
中有两个 Activity ,它们都使用菜单(覆盖 onCreateOptionMenu 和 onOptionsItemSelected)。
嗯,问题是当我按下菜单键时,组中的第二个 Activity 没有显示菜单。第一个 Activity 显示菜单效果很好。
对这个问题有什么想法吗?
我在 child Activity 中有这段代码:
@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);
}
最佳答案
另一种处理此问题的好方法是使用 ActivityGroup 的 LocalActivityManager。获取本地 Activity 管理器,获取当前 Activity ,并执行该 Activity 的适当方法:
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);
}
注意:使用此策略,您不得从子 Activity 调用 super.onCreateOptionsMenu - 这样做会导致堆栈溢出异常。我不确定调用父类(super class)的 on* 方法的目的是什么,因为我省略了它们并且没有看到任何负面结果。 (……还)
关于Android ActivityGroup 菜单问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3157406/