为什么Webview第一次启动会崩溃?

发布于 2024-12-23 09:01:50 字数 777 浏览 1 评论 0原文

在我的 Android 应用程序中,当我创建一个新的模拟器并第一次尝试在 webview 中写入时,它不处于活动状态。我无法在文本字段中写入,然后应用程序崩溃。如果我重新加载应用程序一切正常。

代码:

String url = "http://api.vkontakte.ru/oauth/authorize?client_id=2731649&scope=wall,notify,docs&" +
            "redirect_uri=http://api.vkontakte.ru/blank.html&display=wap&response_type=token";
    WebViewClass wvClforVK = new WebViewClass();

在oncreate中:

webview= (WebView) findViewById(R.id.vkWebView);
         webview.setWebViewClient(wvClforVK);

在buttonclick上:

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

In my Android app, when I create a new emulator and try to write in webview for the first time, it's not active. I can't write in textfield and then the app crashes. If I reload the app all works OK.

Code:

String url = "http://api.vkontakte.ru/oauth/authorize?client_id=2731649&scope=wall,notify,docs&" +
            "redirect_uri=http://api.vkontakte.ru/blank.html&display=wap&response_type=token";
    WebViewClass wvClforVK = new WebViewClass();

In oncreate:

webview= (WebView) findViewById(R.id.vkWebView);
         webview.setWebViewClient(wvClforVK);

On buttonclick:

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

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(2

圈圈圆圆圈圈 2024-12-30 09:01:50

您必须在尝试使用任何组件(例如 R.id.vkWebView)之前设置内容视图。如果在设置内容视图之前使用findViewById(...),它将返回null。

要设置内容视图调用...

setContentView(R.layout.main);

...假设您的布局文件名为 main.xml 但在使用 R.layout 时没有将 .xml 部分放在上面。通常,您会尽可能早地在 Activity 的 onCreate(...) 方法中设置内容视图。这通常在调用 super.onCreate(...); 后立即完成

You must set the content view BEFORE attempting to use any components such as your R.id.vkWebView. If you use findViewById(...) before setting content view, it will return null.

To set the content view call...

setContentView(R.layout.main);

...assuming your layout file is called main.xml but you don't put the .xml part on it when using R.layout. Usually you will set the content view as early in an activity's onCreate(...) method as possible. This is often done immediately after the call to super.onCreate(...);

吾性傲以野 2024-12-30 09:01:50

对于安卓4.2.2,
在开始加载所需的 URL 之前添加 loadUrl("about:blank")。

所以,最终的代码是

WebView webView = (WebView)findViewById(R.id.my_web_view);
webview.loadUrl("about:blank");
webview.loadUrl("https://google.com");

在添加 loadUrl("about:blank") 之前,当我在 android 4.2.2 上运行我的应用程序时,每次我的 webview 尝试加载 Url 时都会崩溃。

For android 4.2.2,
Add loadUrl("about:blank") before you start loading your desired URL.

So,the final code is

WebView webView = (WebView)findViewById(R.id.my_web_view);
webview.loadUrl("about:blank");
webview.loadUrl("https://google.com");

Before adding loadUrl("about:blank"), when i run my app on android 4.2.2 crash everytime my webview try to load Url.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文