Android studio 如何在AsyncTask onPostExecute完成后在MainActivity中执行某些操作

Android studio 如何在AsyncTask onPostExecute完成后在MainActivity中执行某些操作,android-studio,android-asynctask,google-places-api,Android Studio,Android Asynctask,Google Places Api,我正在尝试获取LatLngs,以便找到搜索结果的最近位置,我正在尝试这种方式,但getLatLngs返回null,因为它尚未初始化。在onPostExecute完成后,如何从MainActivity访问内容。请提前感谢 public class GetNearbyPlaces extends AsyncTask<Object, String, String> { private ArrayList<LatLng> LatLngs = new ArrayL

我正在尝试获取LatLngs,以便找到搜索结果的最近位置,我正在尝试这种方式,但getLatLngs返回null,因为它尚未初始化。在onPostExecute完成后,如何从MainActivity访问内容。请提前感谢

    public class GetNearbyPlaces extends AsyncTask<Object, String, String> {

    private ArrayList<LatLng> LatLngs = new ArrayList<>();
    private LatLng latLngMain;
    private LatLng shortestLatLng;


    @Override
    protected void onPostExecute(String s) {
        List<HashMap<String, String>> nearbyPlacesList = null;
        DataParser dataParser = new DataParser();
        nearbyPlacesList = dataParser.parse(s);

        shortestLatLng = DisplayNearbyPlaces(nearbyPlacesList);
    }

    private LatLng DisplayNearbyPlaces(List<HashMap<String, String>> nearbyPlacesList)
    {
        int index = 0;
        LatLng shortest;
        double shortestDistance = Double.MAX_VALUE;
        for(int i = 0;i<nearbyPlacesList.size();i++)
        {
            MarkerOptions markerOptions = new MarkerOptions();

            HashMap<String, String> googleNearbyPlace = nearbyPlacesList.get(i);
            String nameOfPlace = googleNearbyPlace.get("place_name");
            String vicinity = googleNearbyPlace.get("vicinity");
            double lat = Double.parseDouble(googleNearbyPlace.get("lat"));
            double lng = Double.parseDouble(googleNearbyPlace.get("lng"));


            LatLng latLng = new LatLng(lat,lng);
            LatLngs.add(latLng);

            markerOptions.position(latLng);
            markerOptions.title(nameOfPlace + " : " + vicinity);
            markerOptions.icon(BitmapDescriptorFactory.defaultMarker(BitmapDescriptorFactory.HUE_RED));

            if(mMap!=null)
                mMap.addMarker(markerOptions);

        }

        for(int i = 0;i<LatLngs.size();i++)
        {
            double deltaLat = latLngMain.latitude - LatLngs.get(i).latitude;
            double deltaLng = latLngMain.longitude - LatLngs.get(i).longitude;
            double distanceInDegree = Math.sqrt(deltaLat * deltaLat + deltaLng * deltaLng);
            double distanceInMeter = distanceInDegree * 4000;
            if(distanceInMeter<shortestDistance)
            {
                shortestDistance=distanceInMeter;
                index = i;
            }
        }

        shortest = LatLngs.get(index);

        return shortest;
    }

    public LatLng getShortestLatLng()
    {
        return shortestLatLng;
    }

}

在调用LatLngs字段上的方法之前,必须初始化该字段

替换

private ArrayList<LatLng> LatLngs;
private ArrayList LatLngs;

private ArrayList LatLngs=new ArrayList();
在代码中,仅在DisplayNearbyPlaces方法的循环中初始化它,例如,
nearbyPlacesList为空,则此循环的主体不运行,字段保持未初始化状态。

我这样做了,但现在Arraylist为空,java.lang.IndexOutOfBoundsException:索引:0,大小:0
private ArrayList<LatLng> LatLngs;
private ArrayList<LatLng> LatLngs = new ArrayList<>();