2013-02-15 3 views
6

Mam tutaj duży błąd. Próbuję zmienić menu paska czynności za pomocą funkcji supportInvalidateOptionsMenu(); ale gdy funkcja jest wykonywana, aplikacja zamyka się, bez błędów.Sherlock Actionbar invalidateOptionsMenu()

Najdziwniejsze jest to, że wszystko działa normalnie na moim Galaxy Nexus (4.2.2), ale nie działa w mojej przyjaciółki komórkowego (Android 4.0.3), ani w moim emulatora z Android 2.1

Oto moja kod:

protected void onCreate(Bundle savedInstanceState) { 
... 
actionbar = getSupportActionBar(); 
... 
myWebView = (WebView) findViewById(R.id.webview); 
myWebView.getSettings().setJavaScriptEnabled(true); 
myWebView.addJavascriptInterface(new WebAppInterface(this), "Android"); 
myWebView.loadUrl(getString(R.string.site_load)); 
... 
} 

public class WebAppInterface { 
SherlockActivity mActivity; 
WebAppInterface(SherlockActivity c) {mActivity = c;} 
public void setrefreshon() {showRefresh = true; mActivity.supportInvalidateOptionsMenu();} 
} 

Czy ktoś może mi pomóc? :/

Odpowiedz

20

Jest to najprawdopodobniej problem z gwintowaniem. Powinieneś zobaczyć zarejestrowane błędy dotyczące dostępu do interfejsu użytkownika poza głównym wątkiem. Być może filtrujesz je? Zobacz pełny dziennik, a nie tylko dziennik dla swojej paczki.

Z Building Web Apps in Webview:

Uwaga: obiekt, który jest związany z JavaScript działa w innym wątku i nie w wątku, w którym została ona skonstruowana.

Spróbuj:

mActivity.runOnUiThread(new Runnable(){ 
    @Override 
    public void run(){ 
    mActivity.supportInvalidateOptionsMenu(); 
    } 
}); 
+0

Dzięki! To rozwiązało –