添加项目到动作栏中(使用ActionBarSherlock)(Adding items to act

2019-10-18 16:26发布

我使用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.
}

蒙山SherlockFragmentActivity,我甚至不知道我在哪里可以使用充气弹出包含分享按钮的XML ......我非常欣赏的任何想法和建议...

[编辑]这工作,根据DroidT的建议:

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

Answer 1:

您SherlockFragmentActivity也有onCreateOptionsMenu()onPrepareOptionsMenu() 您可以膨胀在你的菜单选项onCreateOptionsMenu()使用getSupportMenuInflater() 你想请调用invalidateOptionsMenu()每当你想要的变化发生在添加菜单选项的SherlockFragmentActivity onPrepareOptionsMenu() 欲了解更多信息,看的“在运行时更改菜单项”一节这个链接。



Answer 2:

如果您使用的是片段的内部菜单,请确保您拨打setHasOptionsMenu(true); 在所述片段onCreate(Bundle savedInstance)方法



文章来源: Adding items to action bar (using ActionBarSherlock)