我得到了这个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)未定义
答案 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();
}