0

アクションバー(シャーロックアクションバー)の更新ボタンを非表示にします。onPrepareOptionsMenu()しかし、関数内でアクションバーの更新(またはInvalidateOptionsMenu())を呼び出す方法がわかりません(makeupdate()関数内でこの呼び出しが必要です)。私は何時間もstackoverflowとgoogleで検索してきました...すべてをテストしましたが何も得られません...

私の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;
    }       
}
4

1 に答える 1

2

_WebAppInterface_クラスにはすでにContextメンバーがあります。それをSherlockActivityにします(名前を変更した方が良いです)

public class WebAppInterface {
     SherlockActivity mActivity;

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

}

と電話

mActivity.invalidateOptionsMenu()
于 2013-02-04T20:15:27.980 に答える