如何从这个公共职能中返回价值?

谢尔盖·马斯洛夫斯基(Sergei Maslovskiy)

下面的示例必须返回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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

公共职能不返回价值

如何从这个对象中获取价值?

如何从这个HTML日期范围中获取价值?

我怎样才能从这个 Firebase 返回的结果中访问电子邮件的价值?

如何从这个尝试捕获功能返回一个值在java中?

如何修复我从这个生成器代码中得到的返回错误?

如何从这个 Javascript 数组中形成这个 JSON?

如何从一个方法中退出,即我如何从这个递归中的函数返回到 java 中?

公共职能

如何从这两者中获取价值?

JSON.NET JObject - 如何从这个嵌套的JSON结构获得价值

我没有从这个 React Native 代码中获得“步骤”的价值

如何从这个三元操作中删除嵌套?

我如何从这个异步函数中得到结果?

如何从这个 th 和 td 元素中删除空格

如何使用 BeautifulSoup 从这个 HTML 代码中获取文本?

如何从这个脚本中取出动画?

如何从这个对象数组中获得以下输出?

我如何从这个 Jsonarray 中删除 T 和 Z

我如何从这个数组中获取 orderId?

如何从这个 json 中过滤作者 ID?

可以自行调用异步函数返回的公共职能

我如何从这个 servlet 返回一个 jsp 作为响应?

我想从这个承诺返回中提取 ID 值,但是如何?

如何从承诺中返回价值

如何从这个 SVG 知道半径?

如何从这个 BeautifulSoup 中提取数字?

为获得/设置私人价值而设置单独的公共职能有什么意义?

我如何从这个数组中获取我需要的数据?