选择项目时,我有一个列表视图和调用详细信息活动。 我的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活动。 感谢
答案 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);
}
}