2015-07-11 32 views
0

请任何人都可以更正此代码?我疯了。该应用程序崩溃,但代码看起来不错。我想在pi计算过程中显示进度对话框。 是strings的参考或params的订单? (或者pi的错误计算?)。新的AsyncTask更正,应用程序崩溃

new AsyncTask<Void, Void, String>() { 
    ProgressDialog dialog; 

    @Override 
    public void onPreExecute() { 
     dialog.setMessage("Calculating..."); 
     dialog.show(); 
    } 

    @Override 
    public String doInBackground(Void... params) { 

     double max_num = 100000000; 
     double min_num = 1; 
     double a = 0; 

     long startTime = System.currentTimeMillis(); 
     while (min_num < max_num) { 
      a += 4/min_num; 
      min_num += 2; 
      a -= 4/min_num; 
      min_num += 2; 
     } 
     long endTime = System.currentTimeMillis(); 

     long total_time = endTime - startTime; 

     String time = Long.toString(total_time); 

     return time; 

    } 

    @Override 
    public void onPostExecute(String time) { 

     if (dialog.isShowing()) { 
      dialog.dismiss(); 

      String ms = "ms"; 
      TextView time_txt = (TextView) findViewById(R.id.time_txt); 
      TextView finished = (TextView) findViewById(R.id.finished); 
      TextView time_ms = (TextView) findViewById(R.id.time_ms); 
      finished.setText("Finished!"); 
      time_txt.setText("TOTAL TIME"); 
      time_ms.setText(time + ms); 
     } 
    } 

}.execute(); 
+0

有关添加logcat的如何?这将有所帮助。 – Senhor

回答

1

初始化的对话框,您的问题将得到解决这样的:

@Override 
public void onPreExecute() { 
     dialog = new Dialog(YourActivity.this); //add this line 
     dialog.setMessage("Calculating..."); 
     dialog.show(); 
}