你好,我正在做一个应用程序,我试图使用enum
定义常量并试图在AsynTask
的doInBackGround
方法的切换情况下访问这些常量但这里显示me
LOGIN_API_CALL不能解析为变量
public class TeemWurkAsyncTask extends AsyncTask<String, Void, String> {
private enum WebAPIConstants {
LOGIN_API_CALL, FORGOT_PASSWORD_API_CALL;
}
private ProgressDialog mProgressDialog;
private Context mContext;
private TaskCompleteListener taskCompleteListener;
private int method;
public TeemWurkAsyncTask(TaskCompleteListener taskCompleteListener, int method) {
this.taskCompleteListener = taskCompleteListener;
this.method = method;
}
@Override
protected void onPreExecute() {
mProgressDialog = new ProgressDialog(mContext);
mProgressDialog.setTitle(mContext.getString(R.string.app_name));
mProgressDialog.setMessage(mContext.getString(R.string.please_wait));
mProgressDialog.setProgressStyle(mProgressDialog.STYLE_SPINNER);
mProgressDialog.setIndeterminate(true);
mProgressDialog.show();
}
@Override
protected String doInBackground(String... params) {
switch(method) {
case LOGIN_API_CALL: <---- Here getting an error "LOGIN_API_CALL cannot be resolved to a variable"
}
return null;
}
@Override
protected void onPostExecute(String result) {
super.onPostExecute(result);
}
}
请帮助我,并提前感谢。
您有几个问题:method
是int
,而不是enum类型,您需要指定WebAPIConstants.LOGIN_API_CALL
。
此外,以这种方式使用开关几乎总是错误的;只要可行,就使用多态性而不是大的开关块。在这种情况下,doInBackground
真的,真的不属于TeemWurkAsyncTask
,它属于正在执行的任务,您应该使用Runnable
或编写自己的类似接口,doInBackground
调用。
不知道LOGIN_API_CALL
是什么,因为它被包含在enum WEBAPIConstants
中。这就是为什么你需要像这样访问它
case WebAPIConstants.LOGIN_API_CALL:
你不能比较一个int和一个WebAPIConstants。
尝试使用以下代码:
private WebAPIConstants method;
public TeemWurkAsyncTask(TaskCompleteListener taskCompleteListener, WebAPIConstants method) {
this.taskCompleteListener = taskCompleteListener;
this.method = method;
}
和使用:
case WebAPIConstants.LOGIN_API_CALL: