0

だから私は非同期タスクから進行状況ダイアログを起動しようとしています。

私の主な活動では、次のように非同期タスクを呼び出しています。

new OCRScanAsyncTask(getApplication().getApplicationContext()).execute();

も試しました:

new OCRScanAsyncTask(getBaseContext()).execute();

私の asyncTask は次のようになります。

public class OCRScanAsyncTask extends AsyncTask<String, Integer, Boolean> {

    /* (non-Javadoc)
     * @see android.os.AsyncTask#doInBackground(Params[])
     */
    private ProgressDialog progressDialog;
    private String TAG ="OCRAsyncTask";
    private String IMAGE_PATH = Environment.getExternalStorageDirectory() + "/bcCardReader/tmp/tmpCrd.jpg";
    public static final String DATA_PATH = Environment
            .getExternalStorageDirectory().toString() +"/bcCardReader/tmp/";

    private String lang = "eng";
    private Context context;


    public OCRScanAsyncTask(Context c){
       Log.v(TAG, "*****************CONSTRUCTING");
        context = c;
        progressDialog = new ProgressDialog(context);
    }
    @Override
    protected void onPreExecute(){

        super.onPreExecute();
        Log.v(TAG, "pre exe");
        progressDialog.setTitle("Please Wait");
        progressDialog.setMessage("Performing Character Recognition");
        progressDialog.setIndeterminate(false);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_HORIZONTAL);
        progressDialog.setCancelable(false);
        progressDialog.show();

    }
............

私のエラーは次のようになります。 ここに画像の説明を入力

4

2 に答える 2

1

非同期タスクの progressDialog の不正なウィンドウ トークン

ほとんどの場合、Context変数に問題があります。だから私の最初の提案はあなたの行を置き換えることです

new OCRScanAsyncTask(getApplication().getApplicationContext()).execute();

new OCRScanAsyncTask(YourActivityName.this).execute();


注:progressDialog開始する前に表示することをお勧めしますAsyncTask

ProgressDialog pd = new ProgressDialog(this); // or YourActivityName.this
pd.setMessage("some message");
pd.show();
AsyncWorker w = new AsyncWorker();
w.execute();
于 2013-02-14T17:15:34.283 に答える
0

コンストラクターを介して渡されたコンテキストのように見えますが、ApplicationContext のようです ...

于 2013-02-14T16:52:11.107 に答える