2 回答

TA貢獻1875條經驗 獲得超5個贊
@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) {
}
};

TA貢獻1852條經驗 獲得超1個贊
問題是,當我第一次點擊任何標記時,然后如果我點擊任何其他標記,打開的活動將打開首先點擊的標記的詳細信息。
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);
}
}
添加回答
舉報