最终我希望这个方法在文本文档中查找一些值,并返回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;
}
}
我知道这根本不是验证用户身份的好方法。我只想弄明白这一点。感谢。
答案 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
}
}