OnCreateOptionsMenu在API级别16下面崩溃

时间:2013-08-23 08:56:59

标签: actionbarsherlock fragment master-detail oncreateoptionsmenu

我一直在eclipse的Master / Detail流程模板中构建一个应用程序(我的第一个)。 我已成功将actionbarsherlock添加到项目中,应用程序将运行到API 10,但每当我尝试从mItem.id调用onCreateOptionsMenu()(所选列表项的ID)时我的细节片段在API 16(android 4.1)mItem.id之外的任何东西都是null。 API 17& 18没有问题,似乎在操作栏之前声明了项目ID。

片段类

public class ModuleDetailFragment extends SherlockFragment implements OnClickListener {
    //The fragment argument representing the item ID that this fragment represents.
    public static final String ARG_ITEM_ID = "item_id";
    // The content this fragment is presenting.
    public ModuleList.ModuleItem mItem;

和onCreateOptionsMenu:

@Override                                   
public void onCreateOptionsMenu(Menu menu, MenuInflater mi) {
    Toast.makeText(getActivity(), "item id = "+mItem.id, Toast.LENGTH_SHORT).show();
}

我有if语句标识按下按钮并显示正确的操作栏菜单项,但这足以导致崩溃。

任何指针都会非常感激,谷歌到目前为止回报的很少。

此致

1 个答案:

答案 0 :(得分:0)

最终弄清楚了,在使用getActivity().invalidateOptionsMenu();

声明Jellybean API之前的变量后,能够查询构建版本并重新初始化菜单栏

可能不是最有效的解决方案,但它对我有效(无论如何都是蜂窝式的)。