Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/223.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 Android-等待截击响应以继续_Java_Android_Geofire - Fatal编程技术网

Java Android-等待截击响应以继续

Java Android-等待截击响应以继续,java,android,geofire,Java,Android,Geofire,我构建了一个应用程序,它在地图中加载标记,我在截取JSON文件时得到的标记,但我首先需要它来加载截取,然后在继续执行代码后,因为另一种方式是使用latLng null向我显示错误,该参数加载不快,另一个方法首先执行并向我显示null 我的负载标记截击代码 public void getMarkers(){ requestQueue = Volley.newRequestQueue(getApplicationContext()); JsonObjectRequest json

我构建了一个应用程序,它在地图中加载标记,我在截取JSON文件时得到的标记,但我首先需要它来加载截取,然后在继续执行代码后,因为另一种方式是使用latLng null向我显示错误,该参数加载不快,另一个方法首先执行并向我显示null

我的负载标记截击代码

public  void getMarkers(){

    requestQueue = Volley.newRequestQueue(getApplicationContext());
    JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, new Response.Listener<JSONObject>() {


        @Override
        public void onResponse(JSONObject response) {

            try {

                JSONArray saagTracker = response.getJSONArray("saagMRK");
                for (int i = 0; i < saagTracker.length(); i++) {
                    JSONObject object = saagTracker.getJSONObject(i);

                    title = object.getString(TITLE);
                    snnipet = object.getString(SNNIP);
                    latLng = new LatLng(Double.parseDouble(object.getString(LAT)), Double.parseDouble(object.getString(LNG)));
                    coor = coor + "|" + object.getString(LAT) + "," + object.getString(LNG);                        // Menambah data marker untuk di tampilkan ke google map

                    addMarker(latLng, title, snnipet);

                }

            } catch (JSONException e) {
                e.printStackTrace();
            }
            //JSONArray array = new JSONArray(response.body().string());

        }
    }, new Response.ErrorListener() {
        @Override
        public void onErrorResponse(VolleyError error) {
            Toast.makeText(MainActivity.this, "Ocurrio un error", Toast.LENGTH_LONG).show();
        }
    });
    requestQueue.add(jsonObjectRequest);
}

您需要为截击响应实现回调。下面是一个非常简单的方法

步骤1:创建此接口

public interface VolleyCallBack {
    void onSuccess();
}
步骤2:将
getMarkers()
方法更改为:

public  void getMarkers(final VolleyCallBack callBack){

requestQueue = Volley.newRequestQueue(getApplicationContext());
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, new Response.Listener<JSONObject>() {


    @Override
    public void onResponse(JSONObject response) {

        try {

            JSONArray saagTracker = response.getJSONArray("saagMRK");
            for (int i = 0; i < saagTracker.length(); i++) {
                JSONObject object = saagTracker.getJSONObject(i);

                title = object.getString(TITLE);
                snnipet = object.getString(SNNIP);
                latLng = new LatLng(Double.parseDouble(object.getString(LAT)), Double.parseDouble(object.getString(LNG)));
                coor = coor + "|" + object.getString(LAT) + "," + object.getString(LNG);                        // Menambah data marker untuk di tampilkan ke google map

                addMarker(latLng, title, snnipet);

                callback.onSuccess();

            }

        } catch (JSONException e) {
            e.printStackTrace();
        }
        //JSONArray array = new JSONArray(response.body().string());

    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Toast.makeText(MainActivity.this, "Ocurrio un error", Toast.LENGTH_LONG).show();
    }
});
requestQueue.add(jsonObjectRequest);
}

什么时候在geofire参数的前面调用
getMarkers()
?在调用
geofire.queryLocation()
之前调用onCreate?在前面调用yes:
getMarkers()
geoQuery=geofire.QueryAtology(新地理位置(纬度、经度),0.1f)非常感谢您的帮助
public  void getMarkers(final VolleyCallBack callBack){

requestQueue = Volley.newRequestQueue(getApplicationContext());
JsonObjectRequest jsonObjectRequest = new JsonObjectRequest(Request.Method.POST, url, new Response.Listener<JSONObject>() {


    @Override
    public void onResponse(JSONObject response) {

        try {

            JSONArray saagTracker = response.getJSONArray("saagMRK");
            for (int i = 0; i < saagTracker.length(); i++) {
                JSONObject object = saagTracker.getJSONObject(i);

                title = object.getString(TITLE);
                snnipet = object.getString(SNNIP);
                latLng = new LatLng(Double.parseDouble(object.getString(LAT)), Double.parseDouble(object.getString(LNG)));
                coor = coor + "|" + object.getString(LAT) + "," + object.getString(LNG);                        // Menambah data marker untuk di tampilkan ke google map

                addMarker(latLng, title, snnipet);

                callback.onSuccess();

            }

        } catch (JSONException e) {
            e.printStackTrace();
        }
        //JSONArray array = new JSONArray(response.body().string());

    }
}, new Response.ErrorListener() {
    @Override
    public void onErrorResponse(VolleyError error) {
        Toast.makeText(MainActivity.this, "Ocurrio un error", Toast.LENGTH_LONG).show();
    }
});
requestQueue.add(jsonObjectRequest);
}
getMarkers(new VolleyCallBack() {

                @Override
                public void onSuccess() {
                    // this is where you will call the geofire, here you have the response from the volley.
                    geoQuery = geofire.queryAtLocation(new GeoLocation(latLng.latitude, latLng.longitude),0.1f);
                });