Android文件上传进度对话框错误

时间:2012-09-26 11:35:50

标签: android ftp

我得到了这个AsyncTask文件上传:

// ASync Task Begin to perform Billing information
class performBackgroundTask extends AsyncTask<Void, Void, Void> {
    Context context;
    private ProgressDialog Dialog;

    protected void onPreExecute() {
        // here you have place code which you want to show in UI thread like
        // progressbar or dialog or any layout . here i am displaying a
        // progressDialog with test please wait while loading......

        Dialog.setMessage(" please wait while loading............");
        Dialog.show();

    }



    private Context getApplicationContext() {
        // TODO Auto-generated method stub
        return null;
    }

    protected Void doInBackground(Void... params) {
        // write here the code to download or any background task.
        goforIt(); // example call method which will download vedio .
        return null;
    }

    protected void onPostExecute(Void unused) {
        Dialog.dismiss();
        // the background task is completed .You can do the code here for next
        // things

    }

    public void goforIt() {

        FTPClient con = null;

        try {
            con = new FTPClient();
            con.connect(globalconstant.host);

            if (con.login(globalconstant.nev, globalconstant.jelszo)) {

                con.enterLocalPassiveMode(); // important!
                con.setFileType(FTP.BINARY_FILE_TYPE);
                String substr = globalconstant.path.substring(4,
                        globalconstant.path.length());
                String filename = substr + "/Festivale.db";
                Log.e("TravellerLog :: ", substr + "/Festivale.db");
                String data = filename;

                FileInputStream in = new FileInputStream(new File(data));
                boolean result = con.storeFile("/Festivale.db", in);
                in.close();
                if (result)
//                  Toast.makeText(getApplicationContext(),
//                          "A fájl feltöltve!", Toast.LENGTH_SHORT).show();

                Log.v("upload result", "succeeded");
                con.logout();
                con.disconnect();
            }
        } catch (Exception e) {
            e.printStackTrace();
        }
    }

}

但总是有错误消息,这个:

09-26 11:30:30.538: E/AndroidRuntime(456): java.lang.NullPointerException
09-26 11:30:30.538: E/AndroidRuntime(456):  at com.eyecom.festivale.performBackgroundTask.onPreExecute(performBackgroundTask.java:25)
...

第25行:Dialog.setMessage(" please wait while loading............");

请帮助我如何制作一个适用于此的进度对话框。 原来就像:

  

private ProgressDialog Dialog = new ProgressDialog(this);

但也有错误,

  

构造函数ProgressDialog(performBackgroundTask)未定义

2 个答案:

答案 0 :(得分:1)

public class async extends AsyncTask<void, void, void>{

  private Context context;
  ProgressDialog prog;

  public async(Context context) {
    this.context = context;
  }


  @Override
  protected void onPreExecute() {
    super.onPreExecute();
    prog=new ProgressDialog(context); 
    prog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
    prog.setMax(100);
    prog.show();
  }

  // ...
}

然后实例化并运行 AsyncTask:

async mTask = new async(context);
mTask.execute();

答案 1 :(得分:1)

你正在做错事,因为Dialog从未发起它只是声明未定义。 另外,当您定义任何对象/变量名称起始字符时,Dialog关键字已经是类名,如果字母表必须是小写的话。开始字符的所有大写字母都用于类名。

<强> Editted

private ProgressDialog dialog;

protected void onPreExecute() {
    dialog = ProgressDialog.show(YourActivity.this, "Processing", "please wait while loading............");
}

并在onPostExecution(Void unused)

onPostExecution(Void unused){
     if(dialog!=null)
         dialog.dismiss();
}