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

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

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

如果我点击同一个标记两次,效果就很好。但是,当我回到地图活动时,第一次点击任何标记,将打开之前点击的标记的详细信息。

可以做什么来在 onMarkerClick 内执行正确的查询。

这是代码。


吃鸡游戏
浏览 75回答 2
2回答

慕田峪4524236

 @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) {        }    };

小怪兽爱吃肉

问题是,当我第一次点击任何标记时,然后如果我点击任何其他标记,打开的活动将打开首先点击的标记的详细信息。Firebase 查询异步执行。您ValueEventListener不会立即接到电话。在方法内使用第二个活动启动代码onDataChange。  @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);        }    }
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Java