开发者社区> 问答> 正文

onMarkerClick内部的Firebase查询无法正常工作

从Firebase数据库中获取数据并在地图上显示多个标记。在onMarkerClick中,我希望用户转到另一个活动,该活动具有有关所点击标记的详细信息。第一次点击标记时,它仅显示标题,第二次点击后,在执行Firebase数据库查询以获取该标记的ID之后转到其他活动,以便提供有关所点击标记的正确详细信息。

问题是,当我第一次点击任何标记时,然后单击其他任何标记时,打开的活动将打开首先点击的标记的详细信息。

如果我在同一个标​​记上点按两次,则效果很好。但是,当我返回到地图活动时,第一次点击任何标记都会打开以前点击的标记的详细信息。

在onMarkerClick内部可以执行正确的查询。

这是代码。

@Override public boolean onMarkerClick(Marker marker) {

    eventTitle = marker.getTitle();

    q = database.getReference("events")
            .orderByChild("event_title")
            .equalTo(marker.getTitle());

    q.addValueEventListener(vel);

    Intent intent = new Intent(NearbyEventsActivity.this, EventDetailActivity.class);
    Bundle bundle = new Bundle();
    bundle.putString("eventid", eventid);
    intent.putExtras(bundle);
    if (eventid != null) {
        startActivity(intent);
    }

    return false;
}

ValueEventListener vel = new ValueEventListener() {
    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
            Event e = snapshot.getValue(Event.class);
            eventid = e.getEvent_id();
        }
    }

    @Override
    public void onCancelled(@NonNull DatabaseError databaseError) {
    }
};

展开
收起
小六码奴 2019-10-03 19:37:02 839 0
1 条回答
写回答
取消 提交回答
  • 在onDataChange方法中使用您的secound Activity起始代码。

    @Override
    public void onDataChange(@NonNull DataSnapshot dataSnapshot) {
        for (DataSnapshot snapshot : dataSnapshot.getChildren()) {
            Event e = snapshot.getValue(Event.class);
            eventid = e.getEvent_id();
        }
    
        Intent intent = new Intent(NearbyEventsActivity.this, EventDetailActivity.class);
        Bundle bundle = new Bundle();
        bundle.putString("eventid", eventid);
        intent.putExtras(bundle);
        if (eventid != null) {
         startActivity(intent);
        }
    }
    
    2019-10-09 15:43:05
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
内容驱动游戏分发 立即下载
软件定义存储面向云的企业级存储 重构 立即下载
软件定义存储-面向云的企业级存储重构 立即下载