将项添加到操作栏(使用ActionBarSherlock)

时间:2013-09-25 19:12:56

标签: android android-actionbar actionbarsherlock

我在项目中使用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;
}

2 个答案:

答案 0 :(得分:1)

您的SherlockFragmentActivity还有onCreateOptionsMenu()onPrepareOptionsMenu()。您可以使用onCreateOptionsMenu()getSupportMenuInflater()中夸大菜单选项。您希望在希望更改发生时调用SherlockFragmentActivity中的invalidateOptionsMenu()并在onPrepareOptionsMenu()中添加菜单选项。有关更多信息,请查看this链接的“在运行时更改菜单项”部分。

答案 1 :(得分:1)

如果您使用片段内的菜单,请务必在片段setHasOptionsMenu(true);方法中调用onCreate(Bundle savedInstance)