2012-03-29 7 views
3

Ich entwickle Android-Web-Anwendung für eine Blog-ähnliche Website. Dafür zeige ich eine HTML-Seite, die eine Liste von Kategorien enthält, die beim Anklicken Artikel zu dieser Kategorie anzeigen.Kann ich beim Parsen von XML mit JavaScript den Fortschrittsdialog und die Fehlermeldung anzeigen?

Ich hole diese Artikel aus den RSS-Feeds der Website, die im XML-Format ist, und benutze JavaScript, um es auf der HTML-Seite anzuzeigen.

Dieser Prozess der Analyse von XML benötigt viel Zeit, um eine Seite zu laden. Während dieser Zeit bekomme ich leeren Bildschirm.Ich habe Fortschrittsdialog implementiert, der funktioniert, wenn Seite zum ersten Mal geladen wird, aber wenn XML analysiert wird JavaScript wird nicht angezeigt.

Hier ist, wie ich Prozessdialog implementiert. Activity.java:

@Override 
public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
     this.getWindow().requestFeature(Window.FEATURE_PROGRESS); 

     setContentView(R.layout.main); 

     getWindow().setFeatureInt(Window.FEATURE_PROGRESS, 
       Window.PROGRESS_VISIBILITY_ON); 

     webview = (WebView) findViewById(R.id.webview); 
     webview.getSettings().setJavaScriptEnabled(true); 
     webview.setBackgroundColor(0); 

     final ProgressDialog progressDialog = new ProgressDialog(activity); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     progressDialog.setMessage("Loading...please wait"); 
     progressDialog.setCancelable(true); 
     webview.setWebViewClient(new WebViewClient() 
     { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) 
      { 
       view.loadUrl(url); 
       return true; 
      } 

     }); 

     webview.loadUrl("file:///android_asset/HomePage.html"); 

     // WebChromeClient give progress etc info 
     webview.setWebChromeClient(new WebChromeClient() 
     { 
      public void onProgressChanged(WebView view, int progress) 
      { 
       progressDialog.show(); 
       progressDialog.setProgress(0); 
       activity.setProgress(progress * 1000); 
       progressDialog.incrementProgressBy(progress); 
       if (progress == 100 && progressDialog.isShowing()) 
        progressDialog.dismiss(); 
      } 
     }); 
} 
  1. Wie kann ich zeigen, Fortschrittsdialog während XML wird durch JavaScript analysiert werden?
  2. Auch ich möchte eine Fehlermeldung anzeigen, wenn keine Internet-Konnektivität für die gleiche Sache ist ihre Möglichkeit, dies zu tun?
  3. Ich habe Call-Funktion als "Tel: Telefonnummer", die funktionierte, aber nachdem ich de öffentlichen boolean shouldOverrideUrlLoading funktioniert es nicht funktioniert? Was mache ich falsch?
+0

Haben Sie AsyncTasks untersucht? Es hat einen schönen Fortschritt Updater Teil darin, der Ihnen helfen könnte http://developer.android.com/reference/android/os/AsyncTask.html Wie für die zweite Frage werfen Sie einen Blick auf diesen Beitrag http: // stackoverflow. com/questions/4086159/checking-internet-connection-on-android – Katana24

Antwort

2

für Ihre Fragen können Sie folgenden Code in Ihre activity.java Datei

package com.package name; 

import android.app.Activity; 
import android.app.AlertDialog; 
import android.app.ProgressDialog; 
import android.content.DialogInterface; 
import android.content.Intent; 
import android.net.Uri; 
import android.os.Bundle; 
import android.view.Window; 
import android.webkit.WebChromeClient; 
import android.webkit.WebView; 
import android.webkit.WebViewClient; 
import android.widget.TextView; 
import android.widget.Toast; 
public class Myactivity extends Activity { 
    TextView myLabel; 
    WebView wv; 
    final Activity activity=this; 
    /** Called when the activity is first created. */ 





    @Override 
    public void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     this.getWindow().requestFeature(Window.FEATURE_PROGRESS); 

     setContentView(R.layout.main); 

     getWindow().setFeatureInt(Window.FEATURE_PROGRESS,Window.PROGRESS_VISIBILITY_ON); 

     wv=(WebView)findViewById(R.id.webview); 
     wv.getSettings().setJavaScriptEnabled(true); 
     wv.setBackgroundColor(0); 

     final ProgressDialog progressDialog = new ProgressDialog(activity); 
     progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL); 
     progressDialog.setMessage("Loading...please wait"); 
     progressDialog.setCancelable(true); 
     wv.setWebViewClient(new WebViewClient() 
     { 
      @Override 
      public boolean shouldOverrideUrlLoading(WebView view, String url) 
      { 
       if (url.startsWith("tel:")) { 
        Intent intent = new Intent(Intent.ACTION_DIAL, 
          Uri.parse(url)); 
        startActivity(intent); 
        return true; 
      }else{ 
       view.loadUrl(url); 
       return true; 
      } 

      } 
     }); 

     wv.loadUrl("file:///android_asset/page.html"); 

     // WebChromeClient give progress etc info 
     wv.setWebChromeClient(new WebChromeClient() 
     { 
      public void onProgressChanged(WebView view, int progress) 
      { 
       progressDialog.show(); 
       progressDialog.setProgress(0); 
       activity.setProgress(progress * 1000); 
       progressDialog.incrementProgressBy(progress); 
       if (progress == 100 && progressDialog.isShowing()) 
       progressDialog.dismiss(); 
      } 
     }); 

     if (AppStatus.getInstance(this).isOnline(this)) { 

      Toast t = Toast.makeText(this,"Welcome !!!!",8000); 
      t.show(); 
      } else { 
       AlertDialog alertDialog = new AlertDialog.Builder(
         CafeNashikActivity.this).create(); 

     // Setting Dialog Title 
     alertDialog.setTitle("No Internet"); 

     // Setting Dialog Message 
     alertDialog.setMessage("Internet Connection not available!"); 

     // Setting Icon to Dialog 
     //alertDialog.setIcon(R.drawable.tick); 

     // Setting OK Button 
     alertDialog.setButton("Exit", new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface dialog, int which) { 
        MyActivity.this.finish(); 

       } 
     }); 

     // Showing Alert Message 
     alertDialog.show(); 
      } 


    } 


} 

Hoffnung verwenden diese Ihnen helfen.

+0

Danke, es funktioniert wirklich wie Charme ... – Ashutosh