0

私はこの 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............");

これで動作する進行状況ダイアログを作成する方法を教えてください。オリジナルは次のようなものです:

プライベート ProgressDialog Dialog = new ProgressDialog( this);

これでもエラーが発生しましたが、

コンストラクタ ProgressDialog(performBackgroundTask) は未定義です

4

2 に答える 2

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();
于 2012-09-26T11:39:01.617 に答える
1

ダイアログが定義されていないと宣言しただけで開始したことがないため、間違ったことをしています。もう1つのこと ダイアログのキーワードは、アルファベットが小文字でなければならない場合、オブジェクト/変数名の開始文字を定義するたびに、すでにクラス名です。開始文字のすべての大文字がクラス名に使用されます。

編集済み

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();
}
于 2012-09-26T11:47:47.200 に答える