亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

onMarkerClick 內的 Firebase 查詢無法正常工作

onMarkerClick 內的 Firebase 查詢無法正常工作

吃雞游戲 2023-09-20 16:36:11
我有一個活動,其中我從 Firebase 數據庫獲取數據并在地圖上顯示多個標記。在 onMarkerClick 中,我希望用戶轉到另一個活動,其中包含有關所點擊的標記的詳細信息。第一次點擊標記時,它僅顯示標題,第二次點擊時,它會在執行 Firebase 數據庫查詢以獲取該標記的 ID 后轉到其他活動,以便提供有關點擊的標記的正確詳細信息。問題是,當我第一次點擊任何標記時,然后如果我點擊任何其他標記,打開的活動將打開首先點擊的標記的詳細信息。如果我點擊同一個標記兩次,效果就很好。但是,當我回到地圖活動時,第一次點擊任何標記,將打開之前點擊的標記的詳細信息??梢宰鍪裁磥碓?onMarkerClick 內執行正確的查詢。這是代碼。
查看完整描述

2 回答

?
慕田峪4524236

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) {

        }

    };


查看完整回答
反對 回復 2023-09-20
?
小怪獸愛吃肉

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);

        }

    }


查看完整回答
反對 回復 2023-09-20
  • 2 回答
  • 0 關注
  • 122 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號