android - 如何在不使用意图的情况下传递 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 中,这样我就可以在我的地图上放置一个标记,将其定位到我收到的实际坐标。
解决方案
您可以为此使用类和静态值:
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();
我在我的应用程序中使用它,它工作正常。
推荐阅读
- api - React Native TypeError: undefined is not a function (near '...this.state.clubs.map...')
- c# - 无论构建器的 WithMethods(..) 中的规范如何,似乎都允许 GET 和 POST
- jquery - 比较 2 个选择值并在它们匹配时发出警报
- c++ - Windows 上的 GSL 联动
- php - 如何在 LARAVEL 中同时启动多个 QUEUE 以实现多线程?
- android - “使用 newLatLngBounds (LatLngBounds, int) 时出错”错误
- mysql - 如何运行狮身人面像?
- javascript - 如何将 Node Js 服务器与 Android Studio 应用程序连接?
- spring-boot - Jpa-Jpql 查询从 OneToOneMapping 中的父实体和子实体中选择所有字段和特定字段
- python - 在 TensorFlow 2.0 的自定义训练循环中应用回调