在Android中与enum交换大小写



你好,我正在做一个应用程序,我试图使用enum定义常量并试图在AsynTaskdoInBackGround方法的切换情况下访问这些常量但这里显示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);
    }
}

请帮助我,并提前感谢。

您有几个问题:methodint,而不是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:

最新更新