0

现在我无法让硬件后退按钮工作。该应用程序与页面和其他所有内容一样加载正常,但是一旦我按下手机后退按钮,它就会崩溃然后强制关闭。谷歌的说明也很糟糕,因为我是一个初学者,他们认为你知道一定的数量。

请告知我应该将代码放在哪里,如果它在错误的位置,以及它本身是否有任何问题。

干杯!

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();
            }
        }

        }
4

1 回答 1

2

不要打电话super.onBackPressedAND finish()。只使用其中之一。

编辑:写

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

代替

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

然后声明

    WebView webView

在您的活动 onCreate 方法之前。

因为您尝试使用实际上为空的 WebView 变量,所以您会遇到问题。

于 2013-06-15T21:20:50.380 回答