Android 更新操作栏菜单

Android 更新操作栏菜单,android,android-actionbar,actionbarsherlock,Android,Android Actionbar,Actionbarsherlock,我正在打开动作栏(夏洛克动作栏)中的“刷新”按钮。但是,我不知道如何在我的makeupdate()函数中调用actionbar更新(onPrepareOptions菜单()或InvalidateOptions菜单())(我需要在函数中调用此函数)。我在stackoverflow和google搜索了几个小时。。。测试全部,但什么也得不到 Mymakeupdate()函数: public void makeupdate(String toast) { Toast.makeText(mCont

我正在打开动作栏(夏洛克动作栏)中的“刷新”按钮。但是,我不知道如何在我的
makeupdate()
函数中调用actionbar更新(
onPrepareOptions菜单()
InvalidateOptions菜单()
)(我需要在函数中调用此函数)。我在stackoverflow和google搜索了几个小时。。。测试全部,但什么也得不到

My
makeupdate()
函数:

public void makeupdate(String toast) {
    Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
    MenuItem item = menu.findItem(R.id.refresh);
    item.setVisible(false);
}
编辑-我的代码

public class SiteActivity extends SherlockActivity {

    private WebView myWebView;
    final Activity MyActivity = this;
    com.actionbarsherlock.app.ActionBar actionbar;
    private Menu mainMenu;

    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState); 


        actionbar = getSupportActionBar();
        actionbar.setNavigationMode(ActionBar.NAVIGATION_MODE_STANDARD);
        actionbar.setTitle("APP");
        actionbar.setDisplayOptions(ActionBar.DISPLAY_SHOW_TITLE);

        setContentView(R.layout.site);

        myWebView = (WebView) findViewById(R.id.webview);
        myWebView.getSettings().setJavaScriptEnabled(true);
        myWebView.getSettings().setBuiltInZoomControls(true);
        myWebView.addJavascriptInterface(new WebAppInterface(this), "Android");  
            myWebView.loadUrl("file:///android_asset/noconnection.html");

        myWebView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress)
            {
                MyActivity.setProgress(progress * 100);
            }
        });

        myWebView.setWebViewClient(new SiteActivityClient() {
            @Override
            public void onReceivedError(WebView view, int errorCode, String description, String failingUrl) {
                myWebView.loadUrl("file:///android_asset/noconnection.html");
            }   
        });                 
    }

    public class WebAppInterface {
        Context mContext;

        WebAppInterface(Context c) {
            mContext = c;
        }
        @JavascriptInterface
        public void makeupdateshowToast(String toast) {
            Toast.makeText(mContext, toast, Toast.LENGTH_SHORT).show();
            mainMenu.findItem(R.id.refresh).setVisible(false);
        }
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        super.onCreateOptionsMenu(menu);
        getSupportMenuInflater().inflate(R.layout.actionbar, menu);
        mainMenu = menu;
        return true;
    }       
}

您的uwebappinterface_uu类已具有上下文成员。让它成为Sherlock活动(如果更改名称,效果会更好)

打电话

mActivity.invalidateOptionsMenu()

makeupdate是您活动的一种方法吗?是的,我使用的是
addJavascriptInterface
,因此该函数由我的webview中的javascript调用-此活动是基于webview的活动。您是否扩展了SherlockActivity/SherlockFragmentActivity?这很奇怪,因为InvalidateOptions菜单应该在SherlockActivity派生类中可用?您可以发布完整的活动吗(或者至少是一个不工作的示例)?我刚刚复制了新的WebAppInterface而不是旧的。我还需要做其他事情吗?正在编译,但操作栏不刷新。我需要旋转手机来刷新操作栏(切换到横向模式时刷新)
mActivity.invalidateOptionsMenu()