Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/322.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/200.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 获取接口方法的返回值_Java_Android_Callback_Return Value - Fatal编程技术网

Java 获取接口方法的返回值

Java 获取接口方法的返回值,java,android,callback,return-value,Java,Android,Callback,Return Value,我已经实现了这个接口: public interface Callback { public abstract ArrayList<String> done(ArrayList<Document> docs); } 公共接口回调{ 完成公开摘要ArrayList(ArrayList文档); } 此外,该方法还包括: public void getNearUsers(Callback callback, LatLng loc) { new Ge

我已经实现了这个接口:

public interface Callback {
    public abstract ArrayList<String> done(ArrayList<Document> docs);
}
公共接口回调{
完成公开摘要ArrayList(ArrayList文档);
}
此外,该方法还包括:

 public void getNearUsers(Callback callback, LatLng loc) {
        new GetNearUsersASyncTask(callback, loc).execute();
    }
    public class GetNearUsersASyncTask extends AsyncTask<Void, Void, ArrayList<Document>>{
        Callback callback;
        LatLng loc;
        ArrayList<Document> documents;

        public GetNearUsersASyncTask(Callback callback, LatLng loc){
            this.callback=callback;
            this.loc=loc;
            documents = new ArrayList<>();
        }

        @Override
        protected ArrayList<Document> doInBackground(Void... params) {

            ...

            return documents;
        }
        @Override
        protected void onPostExecute(ArrayList<Document> docs) {
            ...
            callback.done(docs);
            super.onPostExecute(docs);
        }
    }
public void getNearUsers(回调、LatLng loc){
新的GetNearUsersASyncTask(回调,loc).execute();
}
公共类GetNearUsersASyncTask扩展异步任务{
回调;
LatLng loc;
ArrayList文件;
公共GetNearUsersASyncTask(回调,LatLng loc){
this.callback=callback;
这个.loc=loc;
documents=newarraylist();
}
@凌驾
受保护的ArrayList doInBackground(无效…参数){
...
归还文件;
}
@凌驾
PostExecute上受保护的void(ArrayList文档){
...
回调。完成(文档);
super.onPostExecute(文档);
}
}
最后,这个:

    public ArrayList<String> gotoRec() {
        final ArrayList<String> finalPostIDs = new ArrayList<>();
                serverRequest.getNearUsers(new Callback() {
                    @Override
                    public ArrayList<String> done(ArrayList<Document> users){               
                        ...
                        return finalPostIDs;
                    }
                }, loc);

            }
        });
        //return the finalPostIDs of override method;
    }
public ArrayList gotoRec(){
最终ArrayList FinalPostId=新ArrayList();
serverRequest.getNearUsers(新回调(){
@凌驾
公共ArrayList已完成(ArrayList用户){
...
返回finalPostId;
}
},loc);
}
});
//返回override方法的finalPostId;
}
我的问题是:


如何让回调接口的finalPostId返回ArrayList,以便在gotoRec方法中返回它?有路吗?或者我应该走另一条路吗?

不可能。AsyncTask是异步的,所以您不能强制方法等待其结果,然后返回值-它将删除异步点。好的,我也这么认为,我只是想知道是否有一种“神奇”的方法:p谢谢您的回答!所以没有办法在getNearUsers之外检索FinalPostId,对吗?我真的不明白回调接口的意义。为什么不将一些对象引用传入AsyncTask构造函数,然后从onPostExecute调用其公共方法呢?您可以将done()方法中的逻辑移到onPostExecute。我要用这种方法试试。不可能。AsyncTask是异步的,所以您不能强制方法等待其结果,然后返回值-它将删除异步点。好的,我也这么认为,我只是想知道是否有一种“神奇”的方法:p谢谢您的回答!所以没有办法在getNearUsers之外检索FinalPostId,对吗?我真的不明白回调接口的意义。为什么不将一些对象引用传入AsyncTask构造函数,然后从onPostExecute调用其公共方法呢?您可以将done()方法中的逻辑移到onPostExecute。我就这样试试