0

我一直在从 Eclipse 中的 Master/Detail 流模板构建一个应用程序(我的第一个)。我已actionbarsherlock成功添加到项目中,并且该应用程序将运行到 API 10,尽管每当我尝试mItem.id从我的详细信息片段中调用(所选列表项的 ID)时onCreateOptionsMenu(),API 16(android 4.1)以下的任何内容mItem.id都是空的. 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 语句识别按下的按钮并显示正确的操作栏菜单项,但这足以导致崩溃。

任何指针将不胜感激,谷歌迄今为止返回的很少。

问候,

4

1 回答 1

0

最终想通了,能够在 pre Jellybean APIs 中声明变量后查询构建版本并重新初始化菜单栏getActivity().invalidateOptionsMenu();

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

于 2013-08-26T06:33:14.957 回答