2012-03-29 5 views
3

나는 웹 사이트 같은 블로그를위한 안드로이드 웹 애플리케이션을 개발 중이다. 이 항목을 클릭하면 해당 카테고리와 관련된 기사가 표시되는 HTML 페이지 컨텐트 목록이 표시됩니다.JavaScript를 사용하여 XML을 구문 분석하는 동안 진행 대화 상자 및 오류 메시지를 표시 할 수 있습니까?

XML 형식의 웹 사이트 RSS 피드에서이 기사를 가져오고 있으며 JavaScript를 사용하여 HTML 페이지에 표시하도록 구문 분석하고 있습니다.

XML을 구문 분석하는이 프로세스는 페이지를로드하는 데 많은 시간이 필요합니다.이 기간 동안 빈 화면이 나타납니다. 페이지가 처음으로로드 될 때 작동하지만 XML이 파싱 될 때 잘 작동하는 진행 대화 상자를 구현했습니다. 자바 스크립트가 나타나지 않습니다.

다음은 프로세스 대화 상자를 구현 한 방법입니다. Activity.java는 : XML을 자바 스크립트에 의해 구문 분석하는 동안

@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. 어떻게 진행 대화 상자를 표시 할 수 있습니다?
  2. 또한 동일한 방법으로 사용할 수있는 인터넷 연결이 없으면 오류 메시지를 표시하고 싶습니다.
  3. 나는 전화 기능을 "tel : telephone number"로 사용했지만 작동했으나 나중에 public boolean shouldOverrideUrlLoading을 추가 한 후에 작동하지 않습니다. 내가 뭘 잘못 했니? 귀하의 질문에 대한
+0

AsyncTasks를 살펴 보셨습니까? http://developer.android.com/reference/android/os/AsyncTask.html 두 번째 질문은이 게시물 http : // stackoverflow를 살펴 보겠습니다. co.kr/questions/4086159/checking-internet-connection-on-android – Katana24

답변

2

당신은 당신의 activity.java 파일이 당신을 도울 것입니다

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


    } 


} 

희망을 다음과 같은 코드를 사용할 수 있습니다.

+0

감사합니다 정말 매력처럼 작동합니다 ... – Ashutosh

관련 문제