使用手机的后退按钮回去web视图需要援助 [英] Need assistance using phones back button to go back in Webview

查看:117
本文介绍了使用手机的后退按钮回去web视图需要援助的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

你好这里是我的code

 包com.testappmobile;

进口android.app.Activity;
进口android.os.Bundle;
进口android.view.KeyEvent;
进口android.view.Window;
进口android.webkit.WebChromeClient;
进口android.webkit.WebView;
进口android.webkit.WebViewClient;

公共类testappmobileActivity扩展活动

{

    最后活动活动=这一点;

    私人的WebView的WebView;


    @覆盖
    公共布尔的onkeydown(INT键code,KeyEvent的事件){
        //检查主要活动是BACK键,如果有历史
        如果((钥匙code == KeyEvent.KEY code_BACK)及和放大器; webview.canGoBack()){
            webview.goBack();
            返回true;
        }
        //如果不是BACK键或没有网页的历史,泡到默认
        //系统行为(可能退出活动)
        返回super.onKeyDown(键code,事件);
    }

    @覆盖
    公共无效的onCreate(包savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        。this.getWindow()requestFeature(Window.FEATURE_PROGRESS);
        的setContentView(R.layout.main);
        的WebView web视图=(web视图)findViewById(R.id.webview);
        webView.getSettings()setJavaScriptEnabled(真)。

        webView.setWebChromeClient(新WebChromeClient(){
            公共无效onProgressChanged(web视图来看,INT进度)
            {
                activity.setTitle(载入中...);
                activity.setProgress(进度* 100);

                如果(进度== 100)
                    activity.setTitle(R.string.app_name);
            }
        });

        webView.setWebViewClient(新WebViewClient(){
            @覆盖
            公共无效onReceivedError(web视图来看,INT错误code,字符串描述,字符串failingUrl)
            {
                //处理错误
            }

            @覆盖
            公共布尔shouldOverrideUrlLoading(web视图查看,字符串URL)
            {
                view.loadUrl(URL);
                返回true;
            }
        });


        webView.loadUrl(http://developer.android.com/index.html);
    }
}
 

现在即时通讯有麻烦硬件后退按钮的工作。该应用程序加载罚款一样网页和其他一切,但只要我打的电话后退按钮它崩溃,然后部队密切。  我搜索谷歌在过去的3小时,只发现了含糊不清的答案用很少的信息或断开的链接。谷歌的说明也吸,因为我是一个初学者,他们presume你知道了一定量。

请指教我应该在哪里放置code,如果它是在错误的地方,也如果有什么不对的地方本身。

请不要觉得你会通过谈话我像一个阻碍被光顾了我,请你。

干杯!

解决方案

您已经创建的类A级web视图的参考,但从来没有初始化它这就是为什么NullPointerException异常

。我在你的code制成的的onCreate 方法,一个小的变化,分析,并做出必要的改变(S);

  @覆盖
公共无效的onCreate(包savedInstanceState){
                super.onCreate(savedInstanceState);
                。this.getWindow()requestFeature(Window.FEATURE_PROGRESS);
                的setContentView(R.layout.main);

                //不要在这里创建另一个web视图参考,
                //只使用你的类级中声明的。
                web视图=(web视图)findViewById(R.id.webView);
                webView.getSettings()setJavaScriptEnabled(真)。

                webView.setWebChromeClient(新WebChromeClient(){
                    公共无效onProgressChanged(web视图来看,INT进度)
                    {
                        activity.setTitle(载入中...);
                        activity.setProgress(进度* 100);

                        如果(进度== 100)
                            activity.setTitle(R.string.app_name);
                    }
                });

          //将code相同的休息
          // ...
          // ...
          // ...
}
 

希望你得到了它。 :)

Hi Here is my code

package com.testappmobile;

import android.app.Activity;
import android.os.Bundle;
import android.view.KeyEvent;
import android.view.Window;
import android.webkit.WebChromeClient;
import android.webkit.WebView;
import android.webkit.WebViewClient;

public class testappmobileActivity extends Activity

{

    final Activity activity = this;

    private WebView webview;


    @Override
    public boolean onKeyDown(int keyCode, KeyEvent event) {
        // Check if the key event was the BACK key and if there's history
        if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) {
            webview.goBack();
            return true;
        }
        // If it wasn't the BACK key or there's no web page history, bubble up to the default
        // system behavior (probably exit the activity)
        return super.onKeyDown(keyCode, event);
    }

    @Override
    public void onCreate(Bundle savedInstanceState)
    {
        super.onCreate(savedInstanceState);
        this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
        setContentView(R.layout.main);
        WebView webView = (WebView) findViewById(R.id.webview);
        webView.getSettings().setJavaScriptEnabled(true);

        webView.setWebChromeClient(new WebChromeClient() {
            public void onProgressChanged(WebView view, int progress)
            {
                activity.setTitle("Loading...");
                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)
            {
                // Handle the error
            }

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


        webView.loadUrl("http://developer.android.com/index.html");
    }
}

Now im having trouble getting the hardware back button to work. The app loads fine as does page and everything else but as soon as i hit the phones back button it crashes then forces close. I've searched google for the last 3 hours and have only found vague answers with very little info or broken links. Google's instructions sucked also as i am a beginner and they presume you know a certain amount.

Please advise where i should place the code if it is in the wrong place and also if there is anything wrong with it itself.

Please dont feel you'd be patronising me by talking to me like a retard, please do.

Cheers!

解决方案

You have created a webView reference at class level but never initialized it thats why NullPointerException. I've made a small change in the onCreate method in your code, analyze it and make the necessary change(s);

@Override
public void onCreate(Bundle savedInstanceState) {
                super.onCreate(savedInstanceState);
                this.getWindow().requestFeature(Window.FEATURE_PROGRESS);
                setContentView(R.layout.main);

                // Don't create another webview reference here,
                // just use the one you declared at class level.
                webView = (WebView) findViewById(R.id.webView);
                webView.getSettings().setJavaScriptEnabled(true);

                webView.setWebChromeClient(new WebChromeClient() {
                    public void onProgressChanged(WebView view, int progress)
                    {
                        activity.setTitle("Loading...");
                        activity.setProgress(progress * 100);

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

          // rest of code same
          // ...
          // ...
          // ...
}

Hope you got it. :)

这篇关于使用手机的后退按钮回去web视图需要援助的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆