【发布时间】:2013-07-26 12:15:09
【问题描述】:
我有一个主细节视图,主片段和细节片段都有自己的操作栏菜单项; master有一些,detail有一些,但是details action bar item点击时不调用onOptionsItemSelected。这个问题出在平板电脑上。
另一方面,如果在手机模拟器上运行相同的代码,则详细视图的操作栏项可以正常工作。
menu.xml
<item
android:id="@+id/save_menu"
android:icon="@drawable/ic_checkmark_holo_light"
android:showAsAction="always|withText"
android:title="Save">
</item>
<item
android:id="@+id/cancel_menu"
android:icon="@drawable/ic_menu_close_clear_cancel"
android:showAsAction="always|withText"
android:title="Cancel">
</item>
inflater 工作正常,主细节视图中的两个片段在其onCreate 方法中都有setHasOptionsMenu(true);。
编辑
片段活动中的onCreateOptionsMenu
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return super.onCreateOptionsMenu(menu);
}
onCreateOptionsMenu 在主片段中
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.itemlistactivity_menu, menu);
}
onCreateOptionsMenu 在详细信息片段中
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
inflater.inflate(R.menu.addfragment_menu, menu);
super.onCreateOptionsMenu(menu, inflater);
System.out.println("onCreateOptionsMenu called");
}
【问题讨论】:
-
你是否覆盖了 FragmentActivity 中的 onCreateOptionsMenu 方法?
-
@AdriánRodríguez 更新了问题,就是片段活动中的 onCreateOptionsMenu
-
这就是问题所在,我想。你必须告诉加载什么菜单。试试这个:@Override public boolean onCreateOptionsMenu(Menu menu) { getSupportMenuInflater().inflate(R.menu.menu, menu);返回真; }
-
这样做是给细节片段操作栏项目两次。我有一个包含主从视图的活动。主片段有自己的一组动作栏项目,而详细视图有自己的一组动作栏项目。主片段的菜单项正常工作,但详细片段上的菜单项没有调用
onCreateOptionsMenu。 -
@AdriánRodríguez 用两个片段的
onCreateOptionsMenu更新了问题
标签: android menu android-fragments actionbarsherlock