0

我有这个带有两个选项卡的应用程序。当我访问布局时,第一个选项卡成功打开,网页加载在 web 视图上作为选项卡的内容。但是当我尝试访问第二个选项卡时,它不会将 webview 显示为内容;因此它指向浏览器打开网页。我在主要活动中的意图访问的两个类都有相同的代码。这是我所拥有的:

TabbedActivity.java

import android.app.TabActivity;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.view.Menu;
import android.view.MenuItem;
import android.widget.TabHost;

public class TabbedActivity extends TabActivity{
    @Override
    public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);

    TabHost host=getTabHost();

    host.addTab(host.newTabSpec("g")
    .setIndicator("Google")
    .setContent(new Intent(this, WebActivity2.class)));
    host.addTab(host.newTabSpec("y")
    .setIndicator("Yahoo")
    .setContent(new Intent(this, WebActivity3.class)));
    }
}

这是我用作意图的两个类:

WebActivity2.java

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

    @SuppressLint("SetJavaScriptEnabled")
    public class WebActivity2 extends Activity {
        WebView browser;

        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);

            WebView browser = new WebView(this);
            setContentView(browser);
            browser.loadUrl("http://www.google.com");
        }
    }

WebActivity3.java

import android.annotation.SuppressLint;
import android.app.Activity;
import android.os.Bundle;
import android.webkit.WebView;

    @SuppressLint("SetJavaScriptEnabled")               
    public class WebActivity3 extends Activity {    
        WebView browser;

        @Override
        public void onCreate(Bundle icicle) {
            super.onCreate(icicle);

            WebView browser = new WebView(this);
            setContentView(browser);
            browser.loadUrl("https://m.facebook.com/ama.manilacampus");
        }
    }

我认为错误不在我的 xml 布局中,因为它在第一个选项卡中运行良好。这可能是什么原因?

4

2 回答 2

1

在加载 facebook 链接时,webview 被重定向。由于重定向,默认情况下您的 webview 将启动浏览器活动。您可以通过使用以下代码来更改该行为:

browser.setWebViewClient(new WebViewClient() {
    //to avoid browser prompting for actions when clicking on URLs
    @Override
    public boolean shouldOverrideUrlLoading(WebView view, String url) {
        view.loadUrl(url);  
        return true;
    }
});
于 2013-04-10T04:02:59.763 回答
0

我认为您的页面可能正在重定向。请参阅此相关问题以阻止WebView打开浏览器应用程序。您需要实现 aWebViewClient并返回truein shouldOverrideUrlLoading

于 2013-04-10T03:47:05.737 回答