2010-04-26 2 views
2

У меня возникают проблемы с тем, что WebView всегда заполняет весь экран и, таким образом, покрывает мои вкладки. Вот мой код tabhost ..WebView внутри Tab скрывает tabWidgets

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

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

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

3

Именно это. Я знал о переадресации, переопределяя метод 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()); 

 Смежные вопросы

  • Нет связанных вопросов^_^