每3秒钟,我会收到一条包含纬度和经度的短信。要将坐标从SmsReceiver.class发送到MapActivity.class,我使用了Intent,这会使Google地图在每次接收坐标时刷新。每次我收到一条消息时,它都会使用另一个MapActivity.class。如何在不使用Intent的情况下传递HashMap值?
这是我保存存储在SMSReceiver.class上的HashMap值的方式。
private HashMap<String, Double> coordinates = new HashMap<String, Double>();
DatabaseReference mRef = databaseLocation.push();
double latitudedb = Double.parseDouble(separatedSMS[1]);
double longitudedb = Double.parseDouble(separatedSMS[3]);
coordinates.put("latitude", latitudedb);
coordinates.put("longitude", longitudedb);
我想将HashMap值添加到MapActivity.class中,这样我就可以在地图上放置一个标记,该标记的位置与我收到的实际坐标有关。
答案 0 :(得分:0)
您可以为此使用类和静态值:
public class CommunActivit {
private static HashMap<String, Float> ListOf;
static {
ListOf = new HashMap<>();
}
public static HashMap<String, Float> getListOf() {
return ListOf;
}
public static void setListOf(HashMap<String, Float> listOf) {
ListOf = listOf;
}
}
在您的活动中创建CommunActivit的实例 例如:
CommunActivit obj = new CommunActivit();
获取坐标时,您可以简单地调用obj.setListOf(yourhashmap)
,而要获取坐标时,则只需调用yourhashmap = obj.getListOf();
我在我的应用程序中使用了它,并且效果很好。