您好我正在创建一个应用程序,我尝试使用enum
定义常量并尝试在doInBackGround
AsynTask
方法的切换情况下访问这些常量但是在那里说我
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);
}
}
请帮助我,并提前致谢。
答案 0 :(得分:1)
您有几个问题:method
是int
,而不是枚举类型,您需要指定WebAPIConstants.LOGIN_API_CALL
。
此外,以这种方式使用开关几乎总是错误的事情;在任何可行的情况下,使用多态而不是大的开关块。在这种特定情况下,doInBackground
确实不属于TeemWurkAsyncTask
,它属于正在执行的任务,您应该使用Runnable
或编写自己的类似界面doInBackground
调用的内容。
答案 1 :(得分:0)
它不知道LOGIN_API_CALL
是什么,因为它包含在枚举WEBAPIConstants
中。这就是为什么你需要像这样访问它
case WebAPIConstants.LOGIN_API_CALL:
答案 2 :(得分:0)
您无法将int与WebAPIConstants进行比较。
尝试使用以下代码:
private WebAPIConstants method;
public TeemWurkAsyncTask(TaskCompleteListener taskCompleteListener, WebAPIConstants method) {
this.taskCompleteListener = taskCompleteListener;
this.method = method;
}
并使用:
case WebAPIConstants.LOGIN_API_CALL: