Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/186.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-在扩展AsyncTask的单独类中显示进度对话框_Android_Android Asynctask - Fatal编程技术网

Android-在扩展AsyncTask的单独类中显示进度对话框

Android-在扩展AsyncTask的单独类中显示进度对话框,android,android-asynctask,Android,Android Asynctask,我有一个名为myAPI的类,用于从服务器数据库获取信息。这个类有几个用于获取个人信息的类,例如getCourseInformation,login,register,等等 它工作得很好,直到我意识到我真的需要一个ProgressDialog。确切地说,是一个不确定的进程对话框 尝试这样做: ProgressDialog progressDialog; Context context; public myAPI(Context context) { thi

我有一个名为
myAPI
的类,用于从服务器数据库获取信息。这个类有几个用于获取个人信息的类,例如
getCourseInformation
login
register
,等等

它工作得很好,直到我意识到我真的需要一个
ProgressDialog
。确切地说,是一个不确定的进程对话框

尝试这样做:

ProgressDialog progressDialog;
    Context context;

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

    }
获取调用
myAPI
的类的上下文

下面是我在课堂上如何使用它

public class login extends AsyncTask<MyLogin, String, String>{

    @Override
    protected void onPreExecute() {
        progressDialog = new ProgressDialog(context);
        progressDialog.setMessage("Loading...");
        progressDialog.setIndeterminate(true);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        progressDialog.setCancelable(true);
        progressDialog.show();
    }
...
}
公共类登录扩展异步任务{
@凌驾
受保护的void onPreExecute(){
progressDialog=新建progressDialog(上下文);
progressDialog.setMessage(“加载…”);
progressDialog.setUndeterminate(true);
progressDialog.setProgressStyle(progressDialog.STYLE_微调器);
progressDialog.setCancelable(真);
progressDialog.show();
}
...
}
但它不起作用。它表示
无法添加窗口--令牌null不适用于应用程序


调试了它,我可以看到上下文在那里。。所以不应该是这样的。。任何导游都将不胜感激

不要使用上下文,而要尝试使用活动

@Override
    protected void onPreExecute() {
        progressDialog = new ProgressDialog(getActivity());
        progressDialog.setMessage("Loading...");
        progressDialog.setIndeterminate(true);
        progressDialog.setProgressStyle(ProgressDialog.STYLE_SPINNER);
        progressDialog.setCancelable(true);
        progressDialog.show();
    }

您将传递给
myAPI
的是什么类型的
Context
?它是调用它的类中的
Context
,例如
LoginClass
调用
login
方法
myAPI
类我的意思是,此上下文是
活动的实例还是由
getApplicationContext()
getBaseContext()
返回的?噢,它是一个实例。。如果通过实例,它意味着我从活动传递上下文,那么是的..问题是,它在另一个类中,并且它不扩展
活动
。。将它作为一个实用类,我想..?progressDialog需要附加到一个活动,因此可能会以与传递contextOhh相同的方式传递该活动,嗯,因此我应该将其设置为
progressDialog=new progressDialog(活动)在实例化上面的活动之后?或者我是否应该将类扩展到
活动
并执行
progressDialog=newprogressdialog(myAPI.this)?等等,附加到
活动
,这意味着我无论如何都必须通过它?