我目前正在尝试调整我的应用程序以使用"适用于Android v4的兼容性库",以便为Android 1.6用户提供使用片段的好处.
上下文菜单的实现似乎很棘手:
对于onCreateContextMenu(),这非常有效.上下文菜单从资源文件中膨胀,并根据所选项目进行略微修改(基于listView ...即使片段不是ListFragment).
选择上下文菜单项时会发生此问题. 从第一个添加的片段开始,为所有当前存在的片段调用onContextItemSelected().
在我的例子中,片段用于显示文件夹结构的内容.当打开子文件夹片段的上下文菜单并选择菜单项时,首先在上层调用onContextItemSelected()(取决于此时允许/可见的片段数).
现在,我使用活动级别上的字段的变通方法,该字段包含调用其onCreateContextMenu()的最后一个片段的标记.这样,当存储的标记与getTag()不同时,我可以在onContextItemSelected()的开头调用"return super.onContextItemSelected(item)" .但这种方法对我来说有点脏.
为什么在所有片段上调用onContextItemSelected()?而不只是一个调用onCreateContextMenu()的人?
处理这个问题最优雅的方法是什么?
android contextmenu android-fragments android-support-library
我尝试使用以下代码禁用菜单组,但它不起作用,菜单项仍然启用.你能告诉我有什么问题吗?
RES /菜单/ menu.xml文件:
<menu xmlns:android="http://schemas.android.com/apk/res/android">
<item android:id="@+id/a" android:title="A"></item>
<item android:id="@+id/b" android:title="B">
<menu>
<item android:id="@+id/c" android:title="C" />
<item android:id="@+id/d" android:title="D" />
<group android:id="@+id/group_1">
<item android:id="@+id/e" android:title="E" />
<item android:id="@+id/f" android:title="F" />
</group>
</menu>
</item>
</menu>
Run Code Online (Sandbox Code Playgroud)
Java的:
public boolean onPrepareOptionsMenu (Menu menu) {
menu.setGroupEnabled (R.id.group_1, false); // does not work
menu.setGroupVisible (R.id.group_1, false); // does not work either
return super.onPrepareOptionsMenu (menu);
}
public boolean onCreateOptionsMenu (Menu menu) {
getMenuInflater ().inflate (R.menu.menu, menu);
return true;
}
Run Code Online (Sandbox Code Playgroud)