Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/204.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多个网络视图问题:在其他视图加载之前无法加载第一个视图_Android_Load_Webview - Fatal编程技术网

Android多个网络视图问题:在其他视图加载之前无法加载第一个视图

Android多个网络视图问题:在其他视图加载之前无法加载第一个视图,android,load,webview,Android,Load,Webview,我有一个活动,它将5个webview存储在ViewFlipper中。它一次只显示一个。在活动的onCreate()中,我在主线程上加载第一个WebView,在后台线程中加载其他WebView 我所期望的是在其他人仍在加载时立即看到WebView。我发现第一个WebView执行了loadData(),最后完成。我通过设置webchromeclient并检查onProgressChanged()找到了这个问题。第一个WebView似乎总是最后加载 我假设WebView.loadData()函数是异步

我有一个活动,它将5个
webview
存储在
ViewFlipper
中。它一次只显示一个。在活动的onCreate()中,我在主线程上加载第一个WebView,在后台线程中加载其他WebView

我所期望的是在其他人仍在加载时立即看到
WebView
。我发现第一个
WebView
执行了
loadData()
,最后完成。我通过设置
webchromeclient
并检查
onProgressChanged()
找到了这个问题。第一个WebView似乎总是最后加载

我假设WebView.loadData()函数是异步工作的,但我不知道为什么我加载的第一个函数总是最后一个完成,不是第二个、第三个、第四个或第一个,而是第五个,在我的例子中这是最后一个

有人知道为什么吗

下面是一些示例代码:

private class MyWebChromClient extends WebChromeClient{
private int webViewId;
public MyWebChromClient( int viewFlipperChildNum ){
    webViewId = viewFlipperChildNum;
}

public void onProgressChanged(WebView view, int newProgress) {
    if( newProgress == 100 ){
       //load other WebViews now that the first one is finished!
    }

};      
设置我的Web视图

for( int i = 0; i < 5; i++ ){
        WebView tempWebView = new WebView(this);
        tempWebView.setWebChromeClient( new MyWebChromClient( i ) );
        mFlipper.addView(tempWebView);
}
( (WebView)mFlipper.getChildAt(0) ).loadData( content, "text/html", "UTF-8" );
// load the others now in a background thread...

好吧,在闲逛了一会儿之后,我真的不明白为什么第一个WebView最后才加载,但我确实为自己想出了一个解决方案。我所做的是加载了第一个单独显示的WebView。然后,在onProgressChanged(WebView视图,int newProgress)函数中,我在后台加载其余的WebView

示例代码:

private class MyWebChromClient extends WebChromeClient{
private int webViewId;
public MyWebChromClient( int viewFlipperChildNum ){
    webViewId = viewFlipperChildNum;
}

public void onProgressChanged(WebView view, int newProgress) {
    if( newProgress == 100 ){
       //load other WebViews now that the first one is finished!
    }

};      
}