2013-02-04 37 views
0

我在操作欄(sherlock操作欄)中隱藏我的刷新按鈕。但是,我不知道如何在我的makeupdate()函數(我需要函數內部的這個調用)內調用操作欄更新(onPrepareOptionsMenu()InvalidateOptionsMenu())。我已經在計算器搜索和谷歌幾個小時......所有測試並獲得什麼......更新操作欄菜單

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; 
    }  
} 
+1

是makeupdate您的活動的方法是什麼? – fedepaol

+0

是的,我正在使用'addJavascriptInterface',所以函數在我的webview中被javascript調用 - 這個活動是一個基於webview的活動。 –

+0

您是否擴展了SherlockActivity/SherlockFragmentActivity? – fedepaol

回答

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() 
+0

仍然是一樣的東西:/ –

+0

你確定嗎?我只是試過,它的工作.. – fedepaol

+0

我剛剛複製新的WebAppInterface在舊的。我需要做別的事情? –