Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java AsyncTask有错误-初学者_Java_Android_Android Asynctask - Fatal编程技术网

Java AsyncTask有错误-初学者

Java AsyncTask有错误-初学者,java,android,android-asynctask,Java,Android,Android Asynctask,最后,我希望这个方法在文本文档中查找一些值,并返回用户名和密码的true。但是,我在实现异步任务时遇到了一些问题。我曾试着按照导游的指示去做,但没有成功 我在doInBackground方法的返回类型上得到的错误是“返回类型与AsyncTask.doInBackground(字符串[])不兼容” private-class AuthenticateUser扩展异步任务 { 字符串用户; 串通; 受保护的void onPreExecute(字符串uname、字符串passwd) { 用户=unam

最后,我希望这个方法在文本文档中查找一些值,并返回用户名和密码的true。但是,我在实现异步任务时遇到了一些问题。我曾试着按照导游的指示去做,但没有成功

我在doInBackground方法的返回类型上得到的错误是“返回类型与AsyncTask.doInBackground(字符串[])不兼容”

private-class AuthenticateUser扩展异步任务
{
字符串用户;
串通;
受保护的void onPreExecute(字符串uname、字符串passwd)
{
用户=uname;
pass=passwd;
}
受保护的布尔doInBackground(字符串…字符串)
{
返回true;
}
受保护的布尔值onPostExecute(布尔值v)
{
返回v;
}
} 
我知道这根本不是验证用户身份的好方法。我只是想弄明白。谢谢

 new AuthenticateUser().execute(username, password);

private-class AuthenticateUser扩展异步任务
{
字符串用户;
串通;
受保护的布尔doInBackground(字符串…字符串)
{
this.user=字符串[0];
this.pass=字符串[1];
//奥森
返回true;
}
受保护的void onPostExecute(布尔结果)
{
//在成功验证后执行这些操作
}
} 

这里的问题是,AsyncTask扩展是泛型的,需要三种类型:
AsyncTask
,它们可能是Void或类,但不是基本数据类型

因此,您告诉编译器doInBackground返回一个基本布尔值,但它需要一个布尔类的实例。因此会出现“返回类型不兼容”错误


只需将
受保护的布尔doInBackground(字符串…字符串)
更改为
受保护的布尔doInBackground(字符串…字符串)
你应该很好。

你是否试图覆盖
doInBackground
异步任务的
AsyncTask
方法?只需将
override
放在
doInBackground
之前,这将根据传入的
AsyncTask
参数自动给出
doInBackground
方法的默认结构
protected boolean-doInBackground(String…strings)
to
protected boolean-doInBackground(String…strings)
使用类boolean而不是原始boolean。感谢Oren对其进行排序。然而,我有另一个错误,我忘了提到。我正在获取AuthenticateUser时无法将其解析为类型:new AuthenticateUser.execute(“);即使AuthentcateUser是一个子类,我也要这样做吗?
私有类AuthenticateUser
私有部分可能与此有关。可能会对您有所帮助。请注意,asynctask的类是私有的,因为它位于另一个公共类的作用域中。您可以遵循该设计,或者只需使您的
AuthenticateUser
class public(取决于您的预期使用)。旁注:如果堆栈溢出问题的答案对您有所帮助,您应该接受它,这样它也可以帮助其他人。
 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 
        }
    }