我在项目中使用ActionBarSherlock,有时需要在操作栏中添加一个或多个项目。
在这个BaixadosFragment类(扩展了SherlockFragment)中,我正在使用以下代码,它运行正常:
@Override
public void onCreateOptionsMenu(Menu menu,MenuInflater inflater)
{
inflater.inflate(R.menu.main, menu);
super.onCreateOptionsMenu(menu, inflater);
}
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.refresh:
refresh();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
在这种情况下,我正在添加一个刷新按钮,在main.xml中是孤独的
但是我想在CupomDetalheActivity(虽然添加一个分享按钮)也这样做,但女巫扩展了SherlockFragmentActivity。所以我无法覆盖“onCreateOptionsMenu”,因为它有不同的签名(下面):
//this is inside SherlockFragmentActivity
public final boolean onCreateOptionsMenu(android.view.Menu menu) {
return true;
}
//this is inside SherlockFragment
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
//Nothing to see here.
}
Whith SherlockFragmentActivity,我甚至不知道在哪里可以使用inflater调出包含分享按钮的xml ... 我很欣赏任何想法和建议......
[编辑]根据DroidT的建议,这是有效的:
@Override
public boolean onCreateOptionsMenu(Menu menu)
{
MenuInflater inflater = getSupportMenuInflater();
inflater.inflate(R.menu.share, menu);
super.onCreateOptionsMenu(menu);
return true;
}
答案 0 :(得分:1)
您的SherlockFragmentActivity还有onCreateOptionsMenu()
和onPrepareOptionsMenu()
。您可以使用onCreateOptionsMenu()
在getSupportMenuInflater()
中夸大菜单选项。您希望在希望更改发生时调用SherlockFragmentActivity中的invalidateOptionsMenu()
并在onPrepareOptionsMenu()
中添加菜单选项。有关更多信息,请查看this链接的“在运行时更改菜单项”部分。
答案 1 :(得分:1)
如果您使用片段内的菜单,请务必在片段setHasOptionsMenu(true);
方法中调用onCreate(Bundle savedInstance)