下面的示例必须返回user.photo_100
(并且user.photo_100
响应字符串,我记录了它),但是varwallPostUserAvatar
设置为null。好像我错过了一些东西,但是我找不到。
public class WallPostExtends {
private String wallPostUserAvatar;
public String getUserPhotoLink(int user_id){
//Prepare request for userName and photo
final VKRequest request = VKApi.users().get(VKParameters.from(VKApiConst.USER_ID, user_id, VKApiConst.FIELDS, "photo_100"));
request.executeWithListener(new VKRequest.VKRequestListener() {
@Override
public void onError(VKError error) {
}
@Override
public void onComplete(VKResponse response) {
super.onComplete(response);
//Work with UserName and photo response
VKApiUserFull user = ((VKList<VKApiUserFull>) response.parsedModel).get(0);
wallPostUserAvatar = user.photo_100;
}
});
Log.d("photo link: ", wallPostUserAvatar); //Here is NULL. What am I doing wrong?
return wallPostUserAvatar; //How to return here "user.photo_100" ?
}
}
我想我知道为什么wallPostUserAvatar
为null的原因,因为您正在分配in的值,onComplete()
并且执行流程不是您的想法,因此您打印的日志将首先执行,然后根据发生的情况executeWithListener()
执行。
我对此有一个解决方案,我将与您分享。
您可以在此处使用回调机制。
一个典型的例子是使用接口
public interface Callbacks {
public void successCallback(String response);
public void failCallback(String response);
}
然后,您可以按以下方式使用此界面:
public void getUserPhotoLink(int user_id,final Callbacks callback){
request.executeWithListener(new VKRequest.VKRequestListener() {
@Override
public void onError(VKError error) {
callbacks.failCallback("fail");
}
@Override
public void onComplete(VKResponse response) {
super.onComplete(response);
//Your code
callback.successCallback(user.photo_100);
}
然后可以调用函数getUserPhotoLink()作为
getUserPhotoLink(userid value,new Callbacks() {
@Override
public void successCallback(String success) {
//You will get your desired result here
}
@Override
public void failCallback(String fail) {
});
希望对您有帮助
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句