详细活动中onCreateOptionsMenu出错

时间:2013-03-24 03:11:12

标签: android

选择项目时,我有一个列表视图和调用详细信息活动。 我的onCreateOptionsMenu在Action Bar上显示菜单时出错。

public boolean onCreateOptionsMenu(Menu menu) {
     new MenuInflater(getActivity()).inflate(R.menu.detail_view_menu, menu);
     return (super.onCreateOptionsMenu(menu));
 }

错误是类型Fragment中的onCreateOptionsMenu(Menu,MenuInflater)方法不适用于参数(Menu)。返回线发生错误。 我使用fragmentTransaction实现listview和detail活动。 感谢

2 个答案:

答案 0 :(得分:0)

你的onCreateOptionsMenu(菜单菜单)只需要在托管片段的活动中,而不是片段本身。

您还可以考虑扩展BaseActivity并将其包含在那里。

public class BaseActivity extends Activity {

    public boolean onCreateOptionsMenu(Menu menu) {
        new MenuInflater(getActivity()).inflate(R.menu.detail_view_menu, menu);
        return (super.onCreateOptionsMenu(menu));
    }

}

public class ListActivity extends BaseActivity {
    // ...
}

public class DetailActivity extends BaseActivity {
    // ...
}

答案 1 :(得分:0)

尝试这样,但把它放在你的主Activity类中:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.detail_view_menu, menu);
    return true;
}

OR 如果您希望Fragment将项目添加到ActionBar,则必须使用稍微不同的构造:

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
   super.onCreateOptionsMenu(menu, inflater);
   inflater.inflate(R.menu.detail_view_menu, menu);
}

您还需要添加一个附加参数(MenuInflater)。此外,在片段中,onCreateOptionsMenu不返回布尔值。

现在你有了inflater,你需要在Fragment的setHasOptionsMenu(true)方法中调用onCreate()。否则,您的项目将不会显示在ActionBar中。

处理菜单通胀片段代码现在应如下所示:

public class DetailFragment extends Fragment {

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setHasOptionsMenu(true);
    }

    @Override
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
       super.onCreateOptionsMenu(menu, inflater);
       inflater.inflate(R.menu.detail_view_menu, menu);
    }
}