Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/185.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 异步任务中progressDialog上的窗口标记错误_Android_Android Progressbar_Android Context - Fatal编程技术网

Android 异步任务中progressDialog上的窗口标记错误

Android 异步任务中progressDialog上的窗口标记错误,android,android-progressbar,android-context,Android,Android Progressbar,Android Context,因此,我尝试从异步任务启动一个进度对话框 在我的主要活动中,我调用异步任务,如下所示: new OCRScanAsyncTask(getApplication().getApplicationContext()).execute(); 还尝试: new OCRScanAsyncTask(getBaseContext()).execute(); 我的异步任务如下所示: public class OCRScanAsyncTask extends AsyncTask<String, Inte

因此,我尝试从异步任务启动一个进度对话框

在我的主要活动中,我调用异步任务,如下所示:

new OCRScanAsyncTask(getApplication().getApplicationContext()).execute();
还尝试:

new OCRScanAsyncTask(getBaseContext()).execute();
我的异步任务如下所示:

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();

    }
............
公共类OCRScanAsyncTask扩展了AsyncTask{
/*(非Javadoc)
*@see android.os.AsyncTask#doInBackground(Params[])
*/
私有进程对话;
私有字符串TAG=“OCRAsyncTask”;
私有字符串IMAGE_PATH=Environment.getExternalStorageDirectory()+“/bcCardReader/tmp/tmpCrd.jpg”;
公共静态最终字符串数据\u路径=环境
.getExternalStorageDirectory().toString()+“/bcCardReader/tmp/”;
私有字符串lang=“eng”;
私人语境;
公共任务(上下文c){
Log.v(TAG,************************正在构建);
上下文=c;
progressDialog=新建progressDialog(上下文);
}
@凌驾
受保护的void onPreExecute(){
super.onPreExecute();
Log.v(标记为“pre-exe”);
progressDialog.setTitle(“请稍候”);
progressDialog.setMessage(“执行字符识别”);
progressDialog.setUndeterminate(false);
progressDialog.setProgressStyle(progressDialog.STYLE_水平);
progressDialog.setCancelable(假);
progressDialog.show();
}
............
我的错误如下所示:
看起来通过构造函数传递的上下文似乎是ApplicationContext

异步任务中progressDialog上的窗口标记错误

最有可能的问题是
上下文
变量。所以我的第一个建议是替换您的行

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


注意:我建议您在开始
AsyncTask
之前先显示
progressDialog

ProgressDialog pd = new ProgressDialog(this); // or YourActivityName.this
pd.setMessage("some message");
pd.show();
AsyncWorker w = new AsyncWorker();
w.execute();

检查上下文,它应该是来自Activity的getBaseContext()使用“this”而不是getBaseContext()或getApplicationContext()如果我从fragment调用该方法,getactivity会很酷吗?
ProgressDialog pd = new ProgressDialog(this); // or YourActivityName.this
pd.setMessage("some message");
pd.show();
AsyncWorker w = new AsyncWorker();
w.execute();