asynctask无法到达onpostexecute Android Studio

时间:2018-10-25 18:03:46

标签: android android-asynctask

所以我的课程由于某种原因无法到达onpostexecute函数,在我从Google api获取附近所有地方的其他课程中达到了。它到达最后一行“ return googlePlaceData”,但是随后它跳过了onpostexecute,并且我的程序崩溃,因为它试图读取我通常会在执行后设置的内容。

public class GetNearbyPlacesMenu extends AsyncTask<Object,Void, String>
{
    private String googleplaceData, url;
    private Context context;
    GetNearbyPlacesDetails getNearbyPlacesDetails = new GetNearbyPlacesDetails();
     public List<HashMap<String, String>> detailsArray;


    private static final String TAG = "MainActivity";

    @Override
    protected String doInBackground(Object... objects)
    {
        context = (Context) objects[0];
        url = (String) objects[1];

        DownloadUrl downloadUrl = new DownloadUrl();
        try
        {
            googleplaceData = downloadUrl.ReadTheURL(url);
        }
        catch (IOException e)
        {
            e.printStackTrace();
        }

        return googleplaceData;
    }


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

        DisplayNearbyPlaces(nearByPlacesList);
    }


    private void DisplayNearbyPlaces(List<HashMap<String, String>> nearByPlacesList)
    {
        for (int i=0; i<nearByPlacesList.size(); i++)
        {

            HashMap<String, String> googleNearbyPlace = nearByPlacesList.get(i);
            String place_id = googleNearbyPlace.get(i);
           String searchUrl =  "https://maps.googleapis.com/maps/api/place/details/json?placeid=" + place_id + "&fields=name,rating,website,vicinity,international_phone_number,opening_hours&key=AIzaSyAsmCTRc_x9Pw38C6qQalKNWAdrSYWz5C4";
            getDetailedInformationFromPlace(searchUrl);
            detailsArray = getNearbyPlacesDetails.getDetailsArray();
        }


    }
    private void getDetailedInformationFromPlace(String searchUrl){

        getNearbyPlacesDetails.execute(this,searchUrl);
    }
    public List<HashMap<String, String>> getDetailsArray(){
        return detailsArray;
    }
}

0 个答案:

没有答案