2014-01-08 2 views
0

android.it에서 tab + swipe 앱을 사용해도 문제가 없습니다. 두 번째 페이지에서 json으로 url의 데이터를 asyntask 메소드로로드하면 작업이 잘됩니다. 그러나 데이터로드시 progressbar를 보여줍니다. 문제는 첫 페이지에 진행률 대화 상자가 표시된다는 것입니다. 두 번째 페이지 만보고 싶습니다. 어떻게해야합니까?두 번째 페이지를 스 와이프하면 progressdialog를보고 싶습니까?

감사합니다,

EDIT 여기

공용 클래스 web_get_thread은 AsyncTask를 {

private ProgressDialog progressDialog = new ProgressDialog(context); 
InputStream inputStream = null; 
String result = ""; 

protected void onPreExecute() { 
    progressDialog.setMessage("Loading data..."); 
    progressDialog.show(); 
    progressDialog.setOnCancelListener(new OnCancelListener() { 
     public void onCancel(DialogInterface arg0) { 
      web_api_get_thread.this.cancel(true); 
     } 
    }); 
} 

@Override 
protected String doInBackground(String... params) { 

    StringBuilder builder = new StringBuilder(); 
    try { 
     // Set up HTTP post 

     // HttpClient is more then less deprecated. Need to change to URLConnection 
     HttpClient client = new DefaultHttpClient(); 
     HttpGet httpGet = new HttpGet(params[0]); 
     HttpResponse response = client.execute(httpGet); 
     StatusLine statusLine = response.getStatusLine(); 
     int statusCode = statusLine.getStatusCode(); 
     if (statusCode == 200) { 
     HttpEntity entity = response.getEntity(); 
     InputStream content = entity.getContent(); 
     BufferedReader reader = new BufferedReader(new InputStreamReader(content)); 
     String line; 
     while ((line = reader.readLine()) != null) { 
      builder.append(line); 
     } 
     } else { 
     // Log.e(ParseJSON.class.toString(), "Failed to download file"); 
     } 
    } catch (UnsupportedEncodingException e1) { 
     Log.e("UnsupportedEncodingException", e1.toString()); 
     e1.printStackTrace(); 
    } catch (ClientProtocolException e2) { 
     Log.e("ClientProtocolException", e2.toString()); 
     e2.printStackTrace(); 
    } catch (IllegalStateException e3) { 
     Log.e("IllegalStateException", e3.toString()); 
     e3.printStackTrace(); 
    } catch (IOException e4) { 
     Log.e("IOException", e4.toString()); 
     e4.printStackTrace(); 
    } 
    // Convert response to string using String Builder 
    return builder.toString(); 
} // protected Void doInBackground(String... params) 


protected void onPostExecute(String string) { 

    //parse JSON data 
    try{ 
     JSONArray jArray = new JSONArray(string); 

     this.progressDialog.dismiss(); 

    } catch (JSONException e) { 

     Log.e("JSONException", "Error: " + e.toString()); 

    } // catch (JSONException e) 


} // protected void onPostExecute(Void v) 

}를 확장 내 코드입니다

+0

당신이 우리에게 코드 snippits를 보여줄 수 : 위해서는 다음과 같이 그냥 onPageFinished()WebViewClient를 구현하고 onPageStarted을 확장 할 수 있다는 할까? –

+0

asyntask 메서드 및 onpreexecute 메서드를 사용하여 백그라운드에서 수행합니다. url에서 데이터를로드 한 다음 progressdialog를 무시하고 실행합니다. 두 번째 조각이지만 대화 상자가 첫 번째 조각을 표시합니다. 단지 두 번째 페이지에만 해당됩니다. – user3086226

+0

Daan이 질문을 편집하고 실제 코드 단편을 포함하도록 요청합니다. 주석에 코드를 설명하는 것만이 아닙니다. –

답변

0

당신은 그것을 ProgressBar를 표시 할 수 있습니다로드가 끝나면 URL을로드하고 보이지 않게합니다.

mWebView.setWebViewClient(new WebViewClient() { 

      @Override 
      public void onPageStarted(WebView view, String url, Bitmap facIcon) { 
       mProgressBar.setVisibility(View.VISIBLE); 
      } 

      @Override 
      public void onPageFinished(WebView view, String url) { 
       mProgressBar.setVisibility(View.GONE); 
      } 
     }); 
+0

대답 해줘서 고맙지 만 큰 실수를 저질렀습니다. webview를로드하면 메소드에서 URL을 가져옵니다. 미안 해요, 나는 주니어, – user3086226

+0

나는 내 질문을 편집, (ali kardeş sana mail atabilir miyim sorunu detaylı) – user3086226