Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/219.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android webview中的一个非常奇怪的错误_Android_Webview_Scroll - Fatal编程技术网

Android webview中的一个非常奇怪的错误

Android webview中的一个非常奇怪的错误,android,webview,scroll,Android,Webview,Scroll,所以我只编写了一个非常简单的Android应用程序。它包含一个简单的webview,我想向用户显示一个特定的注册页面。但是,由于它是一个javascript Web应用程序,我无法直接导航到子页面。相反,我需要使用以下方法: public WebResourceResponse shouldInterceptRequest(WebView view, String url) 以操纵webview。然而,由于某些原因,我不明白我不能滚动页面,它总是跳回顶部。这个问题其实很奇怪,我需要给你看一段我

所以我只编写了一个非常简单的Android应用程序。它包含一个简单的webview,我想向用户显示一个特定的注册页面。但是,由于它是一个javascript Web应用程序,我无法直接导航到子页面。相反,我需要使用以下方法:

public WebResourceResponse shouldInterceptRequest(WebView view, String url)
以操纵webview。然而,由于某些原因,我不明白我不能滚动页面,它总是跳回顶部。这个问题其实很奇怪,我需要给你看一段我制作的描述这个问题的视频(文字会很复杂)。请看一看:

因此,我认为问题变得很清楚

此外,我还发现,当我使用没有标准webviewclient的WebChromeClient时,我可以滚动。但是,我无法通过应用我也需要的shouldInterceptRequest来导航应用程序

下面是完整的代码:

package com.example.webviewmanipulatordemo;

import android.os.Bundle;
import android.annotation.SuppressLint;
import android.app.Activity;
import android.view.Menu;
import android.webkit.WebResourceResponse;
import android.webkit.WebSettings;
import android.webkit.WebView;
import android.webkit.WebViewClient;
import android.webkit.WebChromeClient;


public class MainActivity extends Activity {

    public boolean registerFormLoaded = false;
    public WebView webView;

    @SuppressLint("SetJavaScriptEnabled")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        webView = (WebView) findViewById( R.id.webView );
        WebSettings webSettings = webView.getSettings();
        webSettings.setJavaScriptEnabled(true);
        webView.setBackgroundColor(0x00000000);
        webView.setWebViewClient( new WebViewListener() ); // when commenting this scrolling works.
        webView.setWebChromeClient( new WebChromeClient() {} );
        webView.loadUrl( "" );
    }

    @Override
    public boolean onCreateOptionsMenu(Menu menu) {
        // Inflate the menu; this adds items to the action bar if it is present.
        getMenuInflater().inflate(R.menu.main, menu);
        return true;
    }

    public class WebViewListener extends WebViewClient
    {
        @Override
        public WebResourceResponse shouldInterceptRequest(WebView view, String url)
        {
            if( url.contains("") ) {
                registerFormLoaded = true;
                webView.setWebViewClient( null );
                return null;
            }
            if( url.contains("") && !registerFormLoaded ) {
                view.loadUrl("javascript:$('#dialog').remove()");
                view.loadUrl("javascript:go('login/register')");
            }
            return null;
        }

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

}

希望你有任何想法或猜猜这个应用程序中发生了什么。谢谢

我实际上看不到你的视频,但我想我遇到了与你描述的相同的问题。请尝试在包含您的网络视图的布局上设置android:genderantfocusability=“blocksDescendants”。

好的,我知道了。我在方法中做了一些进一步的记录

public WebResourceResponse shouldInterceptRequest( final WebView view, final String url)
我注意到javascript(出于某种奇怪的原因)不断地重新加载页面。我用计算机修复了这个错误

if( url.contains("") && registerFormLoaded ) {
            view.stopLoading();
        }
在这种方法中。现在它工作了。哦,老兄,那真让人讨厌。很高兴现在问题解决了。
谢谢你的阅读

不幸的是,这没有帮助。不过,谢谢你的建议。