2012-11-30 2 views
2

인터넷에서 데이터가로드되는 동안 내 앱에서 버튼 클릭으로 진행 대화 상자를 표시하려고합니다. 나는 그것을 작동시키지 못한다. Dialog 함수를 넣을 곳에 대한 조언을 누군가 줄 수 있을까?인터넷에서 데이터를로드하는 중 진행 대화 상자 표시

이 내 AsyncTask를 방법입니다 다음 AsyncTask를 클래스 사용에

private class GetTweets extends AsyncTask<String, Void, String> { 

     @Override 
     protected String doInBackground(String... twitterURL) { 
      //start building result which will be json string 
      StringBuilder tweetFeedBuilder = new StringBuilder(); 
      //should only be one URL, receives array 
      for (String searchURL : twitterURL) { 
       HttpClient tweetClient = new DefaultHttpClient(); 
       try { 
        //pass search URL string to fetch 
        HttpGet tweetGet = new HttpGet(searchURL); 
        //execute request 
        HttpResponse tweetResponse = tweetClient.execute(tweetGet); 
              StatusLine searchStatus = tweetResponse.getStatusLine(); 
        if (searchStatus.getStatusCode() == 200) { 
         //get the response 
         HttpEntity tweetEntity = tweetResponse.getEntity(); 
         InputStream tweetContent = tweetEntity.getContent(); 
                InputStreamReader tweetInput = new InputStreamReader(tweetContent); 
         BufferedReader tweetReader = new BufferedReader(tweetInput); 
         String lineIn; 
         while ((lineIn = tweetReader.readLine()) != null) { 
          tweetFeedBuilder.append(lineIn); 
         } 
        } 
        else 
         tweetDisplay.setText("Error!"); 
       } 
       catch(Exception e){ 
        tweetDisplay.setText("Error!"); 
        e.printStackTrace(); 
       } 
      } 
      //return result string 
      return tweetFeedBuilder.toString(); 
     } 
        protected void onPostExecute(String result) { 
      //start preparing result string for display 
      StringBuilder tweetResultBuilder = new StringBuilder(); 
      try { 
       //get JSONObject from result 
       JSONObject resultObject = new JSONObject(result); 
       //get JSONArray contained within the JSONObject retrieved - "results" 
       JSONArray tweetArray = resultObject.getJSONArray("results"); 
       //loop through each item in the tweet array 
       for (int t=0; t<tweetArray.length(); t++) { 
        //each item is a JSONObject 
        JSONObject tweetObject = tweetArray.getJSONObject(t); 
             tweetResultBuilder.append(tweetObject.getString("from_user")+": "); 
        tweetResultBuilder.append(tweetObject.get("text")+"\n\n"); 
       } 
      } 
      catch (Exception e) { 
       tweetDisplay.setText("Error!"); 
       e.printStackTrace(); 
      } 
      //check result exists 
      if(tweetResultBuilder.length()>0) 
       tweetDisplay.setText(tweetResultBuilder.toString()); 
      else 
       tweetDisplay.setText("no results!"); 
     } 
    } 
+0

또한 doInBackground에서 결과를 분석하는 것이 더 나을 것이다. –

답변

6

onPrexecute 진행 대화 상자를 표시하고 그것을 해제 onPostExecute를 사용하는 방법

@Override 
    protected void onPreExecute() 
    { 
     super.onPreExecute(); 
     pDialog = new ProgressDialog(YOUR_ACTIVITY_CLASS_NAME.this); 
     pDialog.setMessage("Please Wait"); 
     pDialog.setIndeterminate(false); 
     pDialog.setCancelable(false); 
     pDialog.show(); 
    } 

    @Override 
    protected void onPostExecute(String str) 
    { 
     // Dismiss the dialog once finished 
     pDialog.dismiss(); 
    } 

전에 pDialog을 정의하는 것을 잊지 마세요 당신은 그것을 다음과 같이 부른다 :

ProgresDialog pDialog; 
+0

대단히 고맙습니다. – DevCon

관련 문제