AsyncTask有错误 - 初学者

时间:2013-02-17 11:14:07

标签: java android android-asynctask

最终我希望这个方法在文本文档中查找一些值,并返回true,用户名和密码都存在。但是我在实现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;
        }
    } 

我知道这根本不是验证用户身份的好方法。我只想弄明白这一点。感谢。

2 个答案:

答案 0 :(得分:3)

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

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

只需将protected boolean doInBackground(String... strings)更改为protected Boolean doInBackground(String... strings),您就可以了。

答案 1 :(得分: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 
        }
    }