boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord)); android.util.Log.d("TAGAA", "deleteWayPoint: 删除了吗? " + routeList); if (removed && routeList != null) { List<BNRoutePlanNode> list = new ArrayList<>(); for (List<BNRoutePlanNode> planNodeList : routeList) { //planNodeList获取0是因为list中只有一条数据 list.add(planNodeList.get(0)); } BaiduNaviInitHelper.setCanSpeak(false); BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); new Thread(() -> { BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); }).start(); showFullView(); isWayPoint = true; } else { speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点"); } 这删除和添加途经点是同时进行的吗?
时间: 2024-02-15 18:27:32 浏览: 60
是的,这段代码中删除和添加途经点是同时进行的。首先,通过 `routeList.removeIf` 方法删除了包含 `keyWord` 的途经点,如果删除成功并且 `routeList` 不为空,就将剩下的途经点添加到导航管理器中,然后在新的线程中设置途经点数量和展示全景视图。因此,删除和添加途经点是同时进行的。
相关问题
boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord)); if (removed) { BaiduNaviInitHelper.setCanSpeak(false); BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); List<BNRoutePlanNode> list = new ArrayList<>(); for (List<BNRoutePlanNode> planNodeList : routeList) { //planNodeList获取0是因为list中只有一条数据 list.add(planNodeList.get(0)); } android.util.Log.d("TAGAA", "deleteWayPoint: sdhwaio 核对哇哈 " + list); BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); showFullView(); isWayPoint = false; } else { speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点"); } 这个删除和添加是同时执行的吗?先删除再添加,帮我改一下代码
可以使用以下代码实现先删除再添加的功能:
```
boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord));
if (removed) {
List<BNRoutePlanNode> list = new ArrayList<>();
for (List<BNRoutePlanNode> planNodeList : routeList) {
list.add(planNodeList.get(0));
}
BaiduNaviManagerFactory.getRouteGuideManager().setViaNodes(list);
BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4);
BaiduNaviInitHelper.setCanSpeak(false);
BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes();
BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list);
showFullView();
isWayPoint = false;
} else {
speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点");
}
```
在这段代码中,首先执行了删除操作,然后将剩余的途经点用一个列表保存起来。接着,使用 `setViaNodes()` 方法将剩余的途经点重新添加到导航 SDK 中,同时设置途经点的数量为 4。最后,关闭语音播报、删除所有途经点、重新添加途经点、显示全览图,并设置 `isWayPoint` 为 false。
boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord)); android.util.Log.d("TAGAA", "deleteWayPoint: 删除了吗? " + routeList); if (removed && routeList != null) { List<BNRoutePlanNode> list = new ArrayList<>(); for (List<BNRoutePlanNode> planNodeList : routeList) { //planNodeList获取0是因为list中只有一条数据 list.add(planNodeList.get(0)); } BaiduNaviInitHelper.setCanSpeak(false); //删除所有途经点 BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes(); new Thread(() -> { //添加途经点 BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list); BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4); }).start(); showFullView(); isWayPoint = true; } else { speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点"); } 怎么样才能使 删除和添加途经点不同时执行
要使删除和添加途经点不同时执行,可以将添加途经点的代码放在删除途经点的代码之后,这样可以确保先删除途经点再添加途经点。修改后的代码如下:
```
boolean removed = routeList.removeIf(node -> node.get(0).getName().contains(keyWord));
android.util.Log.d("TAGAA", "deleteWayPoint: 删除了吗? " + routeList);
if (removed && routeList != null) {
List<BNRoutePlanNode> list = new ArrayList<>();
for (List<BNRoutePlanNode> planNodeList : routeList) {
//planNodeList获取0是因为list中只有一条数据
list.add(planNodeList.get(0));
}
BaiduNaviInitHelper.setCanSpeak(false);
//删除所有途经点
BaiduNaviManagerFactory.getRouteGuideManager().deleteViaNodes();
showFullView();
isWayPoint = true;
new Thread(() -> {
//添加途经点
BaiduNaviManagerFactory.getRouteGuideManager().addViaNodes(list);
BaiduNaviManagerFactory.getCommonSettingManager().setViaPointCount(4);
}).start();
} else {
speakWithoutFollowStep("抱歉,当前没有" + keyWord + "途经点");
}
```
这样修改后,先删除途经点,然后展示全景视图和设置 `isWayPoint` 标志位为 `true`,最后在新线程中添加途经点。
阅读全文