java如何从回调接口获取对象值?
第一个问题,我从java编程开始
我有一个AssyncTask方法,它使用一个接口在完成后从OnPostExecute调用用户信息。这一切都很好,但是一旦我收到关于我的主要活动的数据,我就无法提取用户的done方法
我张贴代码以便更好地理解
new FetchUserDataAsyncTask(user, new GetUserCallBack() {
@Override
public void done(User returnedUser) {
String usernameRet = returnedUser.username;
String passwordRet = returnedUser.password;
}
});
以及界面:
public interface GetUserCallBack {
public abstract void done(User returnedUser);
}
AsynkTask:
public class FetchUserDataAsyncTask extends AsyncTask<Void, Void, User> {
RequestHandler rh = new RequestHandler();
User user;
User ret_user;
GetUserCallBack usercallback;
public FetchUserDataAsyncTask(User user, GetUserCallBack usercallback){
this.user = user;
this.usercallback = usercallback;
}
@Override
protected User doInBackground(Void... params) {
try {
HashMap<String, String> dataToSend = new HashMap<>();
dataToSend.put("username", user.username);
dataToSend.put("password", user.password);
ret_user = rh.sendGetRequest("www.fjrmy.php", dataToSend);
return null;
} catch (Exception e) {
e.printStackTrace();
}
return ret_user;
}
@Override
protected void onPostExecute(User returnedUser) {
super.onPostExecute(ret_user);
usercallback.done(returnedUser);
}
}
我只想“提取”usernameRet和passwordRet来处理它们。可能吗
非常感谢你
# 1 楼答案
您的AsnycTask始终返回null。 删除此行:
还不需要在AsyncTask中保留返回值。这应该起作用:
# 2 楼答案
在
AsyncTask
中,在try
块中返回null
。如果rh.sendGetRequest
方法成功,则将其更改为return ret_user;
在示例代码中,您似乎也没有在
AsyncTask
上调用execute