所以我的课程由于某种原因无法到达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;
}
}