0

我试图在两个不同的活动之间切换,每个活动都包含一个 webview。我在切换它们时遇到了很多内存问题,我现在正在尝试以下操作:我在同一布局上设置了 VISIBLE 或 GONE 两个 webview。当我从 webviewA 按下一个按钮时,在 webviewB 上加载一个 url,当 webviewB onPageFinished() 时,A 设置为 GONE,B 设置为 VISIBLE。从 B 到 A 相同。问题是 url 仅在第一次加载...

两个 webviews 设置在相同的布局上,例如,

<RelativeLayout
                android:id="@+id/aLayout"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_below="@+id/barraSocial">

                <WebView
                    android:id="@+id/webviewA"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:autoLink="web"
                    android:textColor="@android:color/black" 
                    android:scrollbars="none"/>
            </RelativeLayout>

            <RelativeLayout
                android:id="@+id/bLayout"
                android:layout_width="fill_parent"
                android:layout_height="fill_parent"
                android:layout_below="@+id/barraSocial">
                <WebView
                    android:id="@+id/webviewB"
                    android:layout_width="fill_parent"
                    android:layout_height="fill_parent"
                    android:autoLink="web"
                    android:textColor="@android:color/black" 
                    android:scrollbars="none"/>   
            </RelativeLayout>

onCreate 活动,

final RelativeLayout LayoutA = (RelativeLayout)findViewById(R.id.aLayout);
final RelativeLayout LayoutB = (RelativeLayout)findViewById(R.id.bLayout);

webviewA = (WebView) findViewById(R.id.webviewA);
webviewB = (WebView) findViewById(R.id.webviewB);

在 webview 上单击一个按钮,

webviewB.loadUrl(UrlVista);

然后,来自 webviewB 的 onPageFinished() 被触发,

 webviewB.setWebViewClient(new WebViewClient() 
        {   
                    @Override
                    public void onPageFinished(WebView view, String url) 
                    {
                        LayoutA.setVisibility(View.GONE);
                        LayoutB.setVisibility(View.VISIBLE);
4

1 回答 1

3

你有两个RelativeLayouts。一个本质上是将另一个推离屏幕。而不是你所拥有的,只有一个具有 2 个 webviews 的相对布局:

在您的 xml 文件中:

<RelativeLayout android:id="@+id/aLayout"                 
    android:layout_width="fill_parent"                 
    android:layout_height="fill_parent"                 
    android:layout_below="@+id/barraSocial">

    <WebView android:id="@+id/webviewA"                     
        android:layout_width="fill_parent"                                
        android:layout_height="fill_parent"                     
        android:autoLink="web"                     
        android:textColor="@android:color/black"                      
        android:scrollbars="none"
        android:alignParentLeft="true"
        android:alignParentTop="true"//>

    <WebView android:id="@+id/webviewB"                     
        android:layout_width="fill_parent"                                
        android:layout_height="fill_parent"                     
        android:autoLink="web"                     
        android:textColor="@android:color/black"                      
        android:scrollbars="none"
        android:alignParentLeft="true"
        android:alignParentTop="true"/>

</RelativeLayout>

然后在你的 onPageFinished

webviewB.setWebViewClient(new WebViewClient(){
    @Override
    public void onPageFinished(WebView view, String url{                               
        webviewA.setVisibility(View.GONE);
        webviewB.setVisibility(View.VISIBLE);
    }
});

这本质上是让您设置 WebView 本身而不是布局的可见性。在这种情况下,布局可以是一个在彼此之上,并且您正在使用它们的可见性来关闭和打开一个。

于 2012-06-22T18:44:28.553 回答