在同一布局上设置的webview之间的android切换

时间:2012-06-22 18:00:59

标签: java android eclipse

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

两个网页浏览设置在相同的布局上,如

<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);

在webviewA按钮上单击,

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);

1 个答案:

答案 0 :(得分:2)

你有两个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);
    }
});

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