2010-12-02 8 views
0

Ich habe eine Haupt-Java-Datei, die eine Reihe von Registerkarten eingerichtet, wo jeder eine separate Aktivität ruft in diesem Fall jede Aktivität mit einer Webseite verknüpft ist. Ich versuche, eine Fortschrittsleiste in der Tab-Aktivität zu implementieren, die einen Fortschrittsbalken anzeigt, wenn auf einen Link geklickt wird, unabhängig davon, welche Registerkarte gerade ausgewählt ist. Ich habe einen Fortschrittsbalken, die ich für eine einzelne Aktivität verwenden können, aber ich kann es für die TabsWie lege ich einen Fortschrittsbalken in eine Anwendung mit Registerkarten

i der Fortschrittsbalken müssen die Arbeit definiert als

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

die nach oncreate geht()

Hier ist die Haupt-Java-Datei

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

Dies ist eine der Aktivitäten, die die Haupt-Java-Datei

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

XML Datei

<?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> 

Wenn Sie mir helfen, dies herausfinden könnte, wäre es

+0

Ich würde definitiv empfehlen, lesen Sie die Progress Bar Abschnitt in diesem Tutorial: http://mobiforge.com/designing/story/understanding-user-interface-android-part-2-views – Jimmy

Antwort

1

Hey das ist genau das, was ich in meinem WebViews Im onCreate Methode des

tun geschätzt werden webview [in Ihrem Fall ist es vielleicht Ihr tabActivity] tun Sie das

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

dann in der Webview-Client tun dies

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

} 

Ich hoffe, es hilft. Ich überschreibe onPageFinished und onPageStarted im Webview-Client. Es ist schwierig, es von onProgressChanged zu tun. Ich habe es versucht, aber ich fand das einfach.

Verwandte Themen