首页 > 解决方案 > 如何在不使用意图的情况下传递 HashMap 值?

问题描述

每隔 3 秒,我就会收到包含纬度和经度的短信。为了将坐标从我的 SmsReceiver.class 发送到我的 MapActivity.class,我使用了意图,这会导致我的 Google 地图在每次收到坐标时都会刷新。每次我收到一条消息时,它都会指向另一个 MapActivity.class。如何在不使用意图的情况下传递 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 中,这样我就可以在我的地图上放置一个标记,将其定位到我收到的实际坐标。

标签: androidgoogle-maps

解决方案


您可以为此使用类和静态值:

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();

我在我的应用程序中使用它,它工作正常。


推荐阅读