我的android webview崩溃后退按钮

时间:2013-06-15 21:19:32

标签: android eclipse webview android-webview back-button

现在我无法让硬件返回按钮工作。该应用程序加载正常页面和其他一切,但只要我按下手机后退按钮它崩溃然后强制关闭。谷歌的指示也很糟糕,因为我是初学者,他们认为你知道一定数量。

如果代码位于错误的位置,并且如果代码本身有任何问题,请告知我应该放置代码的位置。

干杯!

public class MainActivity extends Activity

    {

        final Activity activity = this;

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

            this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
            setContentView(R.layout.activity_main);
            final WebView webView = (WebView) findViewById(R.id.webview);
            webView.getSettings().setJavaScriptEnabled(true);
            webSettings.setPluginState(PluginState.ON);
            webView.getSettings().setUserAgentString("Mozilla/5.0 (Windows; U; Windows NT 6.1; en-GB; rv:1.9.1.2) Gecko/20090729 Firefox/3.5.2 (.NET CLR 3.5.30729)");
            webView.setWebChromeClient(new WebChromeClient() {
                public void onProgressChanged(WebView view, int progress)
                {
                    activity.setTitle("Učitavanje...");
                    activity.setProgress(progress * 100);

                    if(progress == 100)
                        activity.setTitle(R.string.app_name);
                }
            });

            webView.setWebViewClient(new WebViewClient() {
                @Override
                public void onReceivedError(WebView view, int errorCode, String description, String failingUrl)
                {
                    try {
                        webView.stopLoading();
                    } catch (Exception e) {
                    }
                    try {
                        webView.clearView();
                    } catch (Exception e) {
                    }
                    if (webView.canGoBack()) {
                        webView.goBack();
                    }
                    webView.loadUrl("file:///android_asset/greska/greska.html");
                    super.onReceivedError(webView, errorCode, description, failingUrl);
                }

                @Override
                public boolean shouldOverrideUrlLoading(WebView view, String url)
                {
                    view.loadUrl(url);
                    return true;
                }
            });

            webView.loadUrl("http://mobile.myweb.rs");

        }
        public boolean shouldOverrideUrlLoading(WebView webview, String url)
        { 
            webview.loadUrl(url);
            return true;
        }


        WebView webView;
        @Override
        public void onBackPressed (){

            if (webView.isFocused() && webView.canGoBack()) {
                    webView.goBack();       
            }
            else {
                    super.onBackPressed();
                    finish();
            }
        }

        }

1 个答案:

答案 0 :(得分:2)

请勿致电super.onBackPressedfinish()。只使用其中一个。

编辑:写

    webView = (WebView) findViewById(R.id.webview);

而不是

    final WebView webView = (WebView) findViewById(R.id.webview);

然后宣布

    WebView webView
在你的活动onCreate方法之前

因为你正在尝试使用实际上为null的WebView变量,所以你会感到很紧张。