WebView внутри Tab, скрывающий tabWidgets - PullRequest
2 голосов
/ 27 апреля 2010

У меня проблемы с 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) отображается правильно, это просто относительное расположение. Но моя вторая вкладка - это действие, показывающее веб-просмотр, который показывает, но использует весь экран, покрывая мои вкладки. Вот код для моей второй вкладки.

    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 ]

3 голосов
/ 27 апреля 2010

Это именно так. Я знал об обработке перенаправлений путем переопределения метода shouldOverrideUrlLoading объекта WebViewClient, но я не понимал, с каким 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;
    }
}

А затем добавьте MyWebViewClient в мой WebView сразу после того, как я создам его в onCreate (), как это

mWebView.setWebViewClient(new MyWebViewClient());
2 голосов
/ 27 апреля 2010

Если бы мне пришлось угадать, http://test.server.org:8080/m выполняет перенаправление, и в этом случае это не ваш WebView, который «покрывает [ваши] вкладки», а скорее это приложение браузера. WebView по умолчанию обрабатывает перенаправления и обычные клики, запуская приложение Browser.

...