2010-04-26 2 views
2

Je rencontre des problèmes avec un WebView remplissant toujours l'intégralité de l'écran et couvrant ainsi mes onglets. Voici mon code pour le tabhost ..Onglet WebView inside masquant les 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"); 
}} 

Mon premier onglet (NewzbinMobile.class) affiche correctement, il est juste un relativelayout. Mais mon deuxième onglet est une activité montrant un webview et il montre, mais en utilisant l'ensemble de l'écran, couvrant mes onglets. Voici le code pour mon deuxième onglet.

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

Répondre

2

Si je devais deviner, http://test.server.org:8080/m-t un redirect, auquel cas ce n'est pas votre WebView qui « couvre [vos] onglets », mais il est l'application du navigateur. Par défaut, WebView gère les redirections et les clics réguliers en lançant l'application Navigateur.

3

C'est exactement ça. Je connaissais la gestion des redirections en remplaçant la méthode shouldOverrideUrlLoading de WebViewClient, mais je n'avais pas réalisé que l'URL avec laquelle je testais redirigeait! Merci beaucoup.

Donc, pour fixer, voici ce que je l'ai fait ..

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

Et puis ajouter MyWebViewClient à mon WebView juste après que je crée dans onCreate() comme celui-ci

mWebView.setWebViewClient(new MyWebViewClient());