【问题标题】:ProgressDialog in a AsyncTaskAsyncTask 中的 ProgressDialog
【发布时间】:2015-04-15 03:43:11
【问题描述】:

我在 AsyncTask 中使用 ProgressDialog 时遇到问题。

在onPreExecute()中我启动ProgressDialog,但是当我在onPosTExecute()中完成ProgressDialog时出现错误

Cannot resolve symbol 'progresso'

这是我的代码:

 private class DataTransfer extends AsyncTask<Void, Integer, String> {
    private ProgressDialog progresso;
    @Override
    protected void onPreExecute()
    {

        super.onPreExecute();

        progresso.setIndeterminate(true);
        progresso.setCancelable(false);
        progresso.setMessage("Your message");
        progresso.show();
    }


    protected String doInBackground(Void... params) {

        return postData();
    }


    public String postData() {
        String origresponseText = "";
        // Create a new HttpClient and Post Header
        HttpClient httpclient = new DefaultHttpClient();
        HttpPost httppost = new HttpPost("*****"); //URL here
        try {
            // Add your data
            List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
            nameValuePairs.add(new BasicNameValuePair("teste", "OK"));
            nameValuePairs.add(new BasicNameValuePair("crc", "010101"));
            httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));

            // Execute HTTP Post Request
            HttpResponse response = httpclient.execute(httppost);

            origresponseText = readContent(response);

        } catch (ClientProtocolException e) {
            Log.i("ClientProtocolException", e.toString());
            cancel(true);
        } catch (IOException e) {
            Log.i("IOException", e.toString());
            cancel(true);
        }

           String responseText = origresponseText;
        Log.i("String", responseText);
           return responseText;

    }

    public String readContent(HttpResponse response) {
        String text = "";
        InputStream in = null;
        try {
            in = response.getEntity().getContent();
            BufferedReader reader = new BufferedReader(new InputStreamReader(in));
            StringBuilder sb = new StringBuilder();
            String line = null;
            while ((line = reader.readLine()) != null) {
                sb.append(line).append("\n");
            }
            text = sb.toString();
        } catch (IllegalStateException | IOException e) {
            e.printStackTrace();

        } finally {
            try {

                in.close();
            } catch (Exception ex) {
            }
        }

        return text;
    }


    protected void onCancelled(String result) {
        Log.i("Async", "Cancelled");
    }



@Override
    private void onPostExecute(String result) {
        // showDialog("Downloaded " + result + " bytes");


    progresso.dismiss();
        Log.i("Async", "PostExecute");
        Log.i("Result", result);

    }

}

【问题讨论】:

  • 你的英语很好,所以没有理由在帖子中道歉:)

标签: android android-asynctask progressdialog symbols


【解决方案1】:

在onPreExecute(),你有

progresso

你已经在上面这样声明了

private ProgressDialog progresso;

但是在onPostExecute() 你有

progressBar

只需将其更改为

@Override
private void onPostExecute(String result) {
    // showDialog("Downloaded " + result + " bytes");

    progresso.dismiss();

【讨论】:

    【解决方案2】:

    编辑:

    您没有在任何地方初始化进度对话框。使用前先构造:

    progressBar = new ProgressDialog(YourActivityName.this);
    

    文档是here。

    【讨论】:

    • 好收获。我错过了它没有被初始化。刚注意到最初的问题。
    • 这是一个 ProgressBar,但我如何为 ProgressDialog 做?
    【解决方案3】:

    关于第一个问题,这是一个书写错误,在 stackoverflow 中。我将“progressBar”用于ProgressDialog,然后,在编辑主题时,我编辑并通过“progress”更改了“progressBar”,但忘记更改onPostExecute。在我的原始代码中,我使用了“progressBar”。已经在帖子中修复了。

    编辑:我现在感觉很愚蠢。我发现了错误。我把“OnPostExecute()”放在“DataTransfer”类之外,甚至没有意识到。很抱歉给您带来不便,感谢您的帮助。

    【讨论】:

      【解决方案4】:

      你还没有初始化你的进度对话框..这里是更新代码

          private class DataTransfer extends AsyncTask<Void, Integer, String> {
          private ProgressDialog progresso;
          @Override
          protected void onPreExecute()
          {
      
              super.onPreExecute();
              progresso =new ProgessDialog(MainActivity.this);
              progresso.setIndeterminate(true);
              progresso.setCancelable(false);
              progresso.setMessage("Your message");
              progresso.show();
          }
      
      
          protected String doInBackground(Void... params) {
      
              return postData();
          }
      
      
          public String postData() {
              String origresponseText = "";
              // Create a new HttpClient and Post Header
              HttpClient httpclient = new DefaultHttpClient();
              HttpPost httppost = new HttpPost("*****"); //URL here
              try {
                  // Add your data
                  List<NameValuePair> nameValuePairs = new ArrayList<NameValuePair>(2);
                  nameValuePairs.add(new BasicNameValuePair("teste", "OK"));
                  nameValuePairs.add(new BasicNameValuePair("crc", "010101"));
                  httppost.setEntity(new UrlEncodedFormEntity(nameValuePairs));
      
                  // Execute HTTP Post Request
                  HttpResponse response = httpclient.execute(httppost);
      
                  origresponseText = readContent(response);
      
              } catch (ClientProtocolException e) {
                  Log.i("ClientProtocolException", e.toString());
                  cancel(true);
              } catch (IOException e) {
                  Log.i("IOException", e.toString());
                  cancel(true);
              }
      
                 String responseText = origresponseText;
              Log.i("String", responseText);
                 return responseText;
      
          }
      
          public String readContent(HttpResponse response) {
              String text = "";
              InputStream in = null;
              try {
                  in = response.getEntity().getContent();
                  BufferedReader reader = new BufferedReader(new InputStreamReader(in));
                  StringBuilder sb = new StringBuilder();
                  String line = null;
                  while ((line = reader.readLine()) != null) {
                      sb.append(line).append("\n");
                  }
                  text = sb.toString();
              } catch (IllegalStateException | IOException e) {
                  e.printStackTrace();
      
              } finally {
                  try {
      
                      in.close();
                  } catch (Exception ex) {
                  }
              }
      
              return text;
          }
      
      
          protected void onCancelled(String result) {
              Log.i("Async", "Cancelled");
          }
      
      
      
      @Override
          private void onPostExecute(String result) {
          progresso.dismiss();
              Log.i("Async", "PostExecute");
              Log.i("Result", result);
      
          }
      
      }
      

      【讨论】:

        猜你喜欢
        • 2014-12-18
        • 2018-01-28
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多