2010-12-02 4 views
0

J'ai un fichier java principal qui met en place une série d'onglets où chacun appelle une activité séparée dans ce cas, chaque activité est liée à une page Web. J'essaie d'implémenter une barre de progression dans l'activité de l'onglet qui montrera une barre de progression pour chaque clic sur un lien quel que soit l'onglet actuellement sélectionné. J'ai une barre de progression que je peux utiliser pour une seule activité, mais je ne peux pas obtenir à travailler pour les ongletscomment mettre une barre de progression dans une application en utilisant les onglets

i ont la barre de progression définie comme

getWindow().setFeatureInt(Window.FEATURE_PROGRESS, Window.PROGRESS_VISIBILITY_ON); 
    setContentView(R.layout.main); 
    webview = (WebView) findViewById(R.id.webview); 
    webview.setWebChromeClient(new WebChromeClient() { 
     public void onProgressChanged(WebView view, int progress) 
     { 
     MyActivity.setProgress(progress * 100); 
      if(progress == 100) 

       MyActivity.setTitle(R.string.app_name); 
     } 
     }); 

qui va après oncreate()

Voici le fichier principal Java

import android.app.Activity; 
import android.app.TabActivity; 
import android.content.Intent; 
import android.content.res.Resources; 
import android.os.Bundle; 
import android.view.Menu; 
import android.view.MenuInflater; 
import android.view.View; 
import android.view.Window; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.widget.TabHost; 
import android.widget.TextView; 

public class UniversityofColorado extends TabActivity{ 

    WebView webview; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 

     TabHost host=getTabHost(); 
     Resources res = getResources(); 

     host.addTab(host.newTabSpec("one") 
       .setIndicator("",res.getDrawable(R.drawable.ic_tab_google)) 
       .setContent(new Intent(this, Hello.class))); 

     host.addTab(host.newTabSpec("two") 
         .setIndicator("Colorado Main Site") 
         .setContent(new Intent(this, ColoradoMainSiteBrowser.class))); 

     host.addTab(host.newTabSpec("three") 
         .setIndicator("CULearn") 
         .setContent(new Intent(this, CULearnBrowser.class))); 

     host.addTab(host.newTabSpec("four") 
       .setIndicator("CULink") 
       .setContent(new Intent(this, CULinkBrowser.class))); 

     host.addTab(host.newTabSpec("five") 
       .setIndicator("MyCUInfo") 
       .setContent(new Intent(this, MyCUInfoBrowser.class))); 

     host.addTab(host.newTabSpec("six") 
       .setIndicator("", res.getDrawable(R.drawable.ic_tab_map)) 
       .setContent(new Intent(this, CampusBrowser.class))); 

     host.addTab(host.newTabSpec("Seven") 
       .setIndicator("",res.getDrawable(R.drawable.ic_tab_notes)) 
       .setContent(new Intent(this, NotesList.class))); 

     host.addTab(host.newTabSpec("eight") 
       .setIndicator("", res.getDrawable(R.drawable.ic_tab_help)) 
       .setContent(new Intent(this, CampusBrowser.class))); 
    } 

Voici une des activités que le principal appelle fichier java

import android.app.Activity; 
import android.os.Bundle; 
import android.view.KeyEvent; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 

public class CampusBrowser extends Activity { 

    WebView webview; 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.main); 
    webview = (WebView) findViewById(R.id.webview); 
    webview.setWebViewClient(new HelloWebViewClient()); 
    webview.getSettings().setJavaScriptEnabled(true); 
    webview.loadUrl("http://amath.colorado.edu/department/Maps/bldgs.html"); 
    } 
    private class HelloWebViewClient extends WebViewClient { 
    @Override 
    public boolean shouldOverrideUrlLoading(WebView view, String url) 
    { 
    view.loadUrl(url); 
    return true; 
    } 
    } 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
    if ((keyCode == KeyEvent.KEYCODE_BACK) && webview.canGoBack()) { 
    webview.goBack(); 
    return true; 
    } 
    return super.onKeyDown(keyCode, event); 
    } 
    } 

fichier XML

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:orientation="vertical" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
    > 
<WebView xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/webview" 
    android:layout_width="fill_parent" 
    android:layout_height="fill_parent" 
/> 
<TextView 
    android:layout_width="fill_parent" 
    android:layout_height="wrap_content" 
    android:text="@string/hello" 
    /> 
</LinearLayout> 

Si vous pouviez me aider à comprendre cela, il serait apprécié

+0

Je recommande fortement de lire la section Barre de progression de ce tutoriel: http://mobiforge.com/designing/story/understanding-user-interface-android-part-2-views – Jimmy

Répondre

1

Hey c'est exactement ce que je fais dans mes webviews

Dans la méthode onCreate du webview [dans votre cas, il peut s'agir de votre ongletActivity] faites ceci

protected void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
     requestWindowFeature(Window.FEATURE_INDETERMINATE_PROGRESS); 
    setContentView(R.layout.webview_simple); 
} 

puis dans le client Webview faire cela

private class MyWebViewClient extends WebViewClient { 

public synchronized boolean shouldOverrideUrlLoading(WebView view, String url){ 
}// and all ur implementation 

    public void onPageFinished(WebView view, String url) { 
     super.onPageFinished(view, url); 
     setProgressBarIndeterminateVisibility(false); 
    } 

    public void onPageStarted(WebView view, String url, Bitmap favicon) { 
     setProgressBarIndeterminateVisibility(true); 
     super.onPageStarted(view, url, favicon);    
    } 

} 

Espérons que cela aide. Je remplace les onPageFinished et onPageStarted dans le client webview. C'est difficile de le faire depuis onProgressChanged. J'ai essayé mais j'ai trouvé que c'était simple.

Questions connexes