我有一个扩展应用程序的数据类,它应该存储的其中一个数据集是POI位置和访问时间的HashMap
public class CharacterSheet extends Application {
private HashMap<PointOfInterest, Date> coolDowns = new HashMap<>();
public HashMap GetAllCoolDowns() { return coolDowns; } //dev only?
public Date GetCoolDown(PointOfInterest poi) {return coolDowns.get(poi);}
public Date PutCoolDown(PointOfInterest poi, Date date) {return coolDowns.put(poi, date);}}然后,在谷歌地图活动中,我抓取了OnPOIclick
@Override
public void onPoiClick(final PointOfInterest poi) {
//POI Cool Down
Date currentTime = Calendar.getInstance().getTime();
Date lastTime = ((CharacterSheet) this.getApplication()).GetCoolDown(poi);//this ONLY returns null??
if (lastTime != null){
int timeDiff = currentTime.compareTo(lastTime);
makeToast("Time Since last visit: " + timeDiff );
} else { makeToast("First");
}
((CharacterSheet) this.getApplication()).PutCoolDown(poi, currentTime);
makeToast("This?" + ((CharacterSheet) this.getApplication()).GetCoolDown(poi));}顺序应为Click poi,Get current time..如果上次访问时间为null,则获取上次访问时间。以前从未出现过,将时间和日期存储在以poi为关键字的hashmap中
下一次出现,这一次上次不应该是空的,因为我们已经存储了这个poi和时间。但是不管它返回什么,都会返回null。
最后一行代码是一个makeToast帮助器,它告诉我数据类中有什么。这将为我提供一个日期值,当我单击not a null value时
后来在OnPOIClick中生成了一个片段,但在用户可以做任何事情之前,我不知道这会对它产生什么影响,因为在为片段调用数据之前,所有的代码都已经完成了,但我觉得应该提到它
PlacesClient placesClient = Places.createClient(this);
String placeId = poi.placeId;
List<Place.Field> placeFields = Arrays.asList(Place.Field.ID, Place.Field.TYPES);
FetchPlaceRequest request = FetchPlaceRequest.newInstance(placeId, placeFields);
placesClient.fetchPlace(request).addOnSuccessListener(new OnSuccessListener<FetchPlaceResponse>() {
@Override
public void onSuccess(FetchPlaceResponse fetchPlaceResponse) {
Place place = fetchPlaceResponse.getPlace();
PlaceDataHolder holder = new PlaceDataHolder(place);
String placeName = poi.name;
makeLootFragment(holder,placeName);启动的片段是点击POI的全部要点,所以如果是这种情况,我需要考虑另一种方式来处理冷却。但我真的不明白为什么它会干扰。
发布于 2020-03-19 07:04:38
我对返回的PointOfInterest考虑得不够周到。每次发出请求时,它都会附带一个UUID,使其无法作为键,因为每次我单击它时,它都会发生变化。这是通过更改我的post操作检查来发现的,从确保它已进入hashMap,到查看整个hashMap的内容,很快就会发现,尽管只单击了一个poi,条目仍在不断增加
要解决这个问题非常简单。我从poi.name创建了一个新的字符串变量,并用它代替poi,必须更改HashMap以接受字符串而不是PointOfInterest
https://stackoverflow.com/questions/60715357
复制相似问题