3

最终,我希望此方法在文本文档中查找一些值并返回真实的用户名和密码。但是我在实现 AsyncTask 时遇到了一些问题。我试图按照http://developer.android.com/reference/android/os/AsyncTask.html上的指南进行操作,但没有成功。

我在 doInBackground 方法的返回类型中遇到的错误是“返回类型与 AsyncTask.doInBackground(String[]) 不兼容”

    private class AuthenticateUser extends AsyncTask<String, Integer, Boolean>
    {
        String user;
        String pass;

        protected void onPreExecute(String uname, String passwd)
        {
            user = uname;
            pass = passwd;
        }

        protected boolean doInBackground(String... strings)
        {
            return true;
        }

        protected boolean onPostExecute(boolean v)
        {
            return v;
        }
    } 

我知道这根本不是验证用户的好方法。我只是想弄清楚这一点。谢谢。

4

2 回答 2

3

这里的问题是 AsyncTask 扩展是通用的,需要三种类型:AsyncTask<Params, Progress, Result>可能是 Void 或类,但不是原始数据类型。

所以发生的事情是你告诉编译器 doInBackground 返回一个原始布尔值,但它期待一个布尔类的实例。因此您会收到“返回类型不兼容”错误。

只需更改protected boolean doInBackground(String... strings)protected Boolean doInBackground(String... strings),您应该会没事的。

于 2013-02-17T11:28:09.020 回答
0
 new AuthenticateUser().execute(username, password);

.

 private class AuthenticateUser extends AsyncTask<String, Void, Boolean>
    {
        String user;
        String pass;

        protected Boolean doInBackground(String... strings)
        {
            this.user = strings[0];
            this.pass = strings[1];

            //authen
            return true;
        }

        protected void onPostExecute(Boolean result)
        {
             //do stuff when successfully authenticated 
        }
    } 
于 2013-02-17T11:23:57.717 回答