Tab中的WebView隐藏了tabWidgets

时间:2010-04-26 23:45:23

标签: android webview android-tabhost

我在使用WebView时总是填满整个屏幕并因此覆盖我的标签。这是tabhost的代码..

    public class tabNZBMobile extends TabActivity {
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
        requestWindowFeature(Window.FEATURE_NO_TITLE);

  Resources res = getResources(); // Resource object to get Drawables
  TabHost tabHost = getTabHost();  // The activity TabHost
  TabHost.TabSpec spec;  // Reusable TabSpec for each tab
  Intent intent;  // Reusable Intent for each tab

  // Create an Intent to launch an Activity for the tab (to be reused)
  intent = new Intent().setClass(this, NewzbinMobile.class);

  // Initialize a TabSpec for each tab and add it to the TabHost
  spec = tabHost.newTabSpec("search").setIndicator("Search",
    res.getDrawable(R.drawable.ic_tab_search))
    .setContent(intent);
  tabHost.addTab(spec);

  // Do the same for the other tabs
  intent = new Intent().setClass(this, sabnzbWeb.class);
  spec = tabHost.newTabSpec("sabnzbweb").setIndicator("SabNZBd",
    res.getDrawable(R.drawable.ic_tab_sabnzbweb))
    .setContent(intent);
  tabHost.addTab(spec);

  tabHost.setCurrentTabByTag("search");
 }}

我的第一个标签(NewzbinMobile.class)正确显示,它只是一个relativelayout。但我的第二个标签是一个显示webview的活动,它正在显示,但使用整个屏幕,覆盖我的标签。这是我的第二个标签的代码。

    public class sabnzbWeb extends Activity {
 WebView mWebView;
 public void onCreate(Bundle savedInstanceState) {
  super.onCreate(savedInstanceState);
  String sabNZBurl = new String("http://test.server.org:8080/m");

  mWebView = new WebView(this);
  mWebView.getSettings().setJavaScriptEnabled(true);
  setContentView(mWebView);
  mWebView.loadUrl(sabNZBurl);
 }}

2 个答案:

答案 0 :(得分:3)

就是这样。我知道通过覆盖WebViewClient的shouldOverrideUrlLoading方法来处理重定向,但我没有意识到我正在测试的url是重定向的!很多。

所以要解决,这就是我所做的......

final class MyWebViewClient extends WebViewClient {
    @Override
    // Show in WebView instead of Browser
    public boolean shouldOverrideUrlLoading(WebView view, String url)
    {
        view.loadUrl(url);
        return true;
    }
}

然后在我在onCreate()中创建它之后立即将MyWebViewClient添加到我的WebView

mWebView.setWebViewClient(new MyWebViewClient());

答案 1 :(得分:2)

如果我不得不猜测,http://test.server.org:8080/m会进行重定向,在这种情况下,WebView不是“覆盖[您的]标签”,而是浏览器应用程序。默认情况下,WebView通过启动浏览器应用程序来处理重定向和定期点击。