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)
处理此问题的另一个好方法是使用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 - 这样做会导致堆栈溢出异常.我不确定在*方法上调用超类的目的是什么,因为我省略了它们并且没有看到任何负面结果.(......)
| 归档时间: |
|
| 查看次数: |
3497 次 |
| 最近记录: |