0

現在、ハードウェアの戻るボタンが機能しません。アプリはページや他のすべてと同様に正常に読み込まれますが、電話の戻るボタンを押すとすぐにクラッシュし、強制的に閉じます。私は初心者なので、Googleの指示もひどいものでした。彼らはあなたがある程度知っていると仮定しています。

コードが間違った場所にある場合、およびコード自体に問題がある場合は、コードを配置する場所を教えてください。

乾杯!

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()。それらの 1 つだけを使用します。

編集:書く

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

それ以外の

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

次に宣言する

    WebView webView

アクティビティの onCreate メソッドの前。

実際には null である WebView 変数を使用しようとしているため、クラッシュが発生しています。

于 2013-06-15T21:20:50.380 に答える