首页 > 解决方案 > 再次调用上一个活动的方法 onBackPress

问题描述

屏幕截图 1 - https://ibb.co/k5O8Eo

屏幕截图 2 - https://ibb.co/bz5MZo

屏幕截图一个是它应该如何表现,当我打开它时它的表现确实如此......但是在我打开活动并转到下一个活动并回来之后......同样的消息被再次获取并显示两次虽然只有在数据库中它只有一次......我该如何解决这个问题?

    @Override
protected void onStart() {
    super.onStart();
    fetchMessages();
}

private void fetchMessages() {
   mDatabaseReference.child("Messages").child(MessageSenderId).child(MessageRecieverId).addChildEventListener(new ChildEventListener() {
        @Override
        public void onChildAdded(DataSnapshot dataSnapshot, String s) {
            Messages message = dataSnapshot.getValue(Messages.class);
            messagesList.add(message);
            mAdapter.notifyDataSetChanged();
        }
        @Override
        public void onChildChanged(DataSnapshot dataSnapshot, String s) {
        }
        @Override
        public void onChildRemoved(DataSnapshot dataSnapshot) {
        }
        @Override
        public void onChildMoved(DataSnapshot dataSnapshot, String s) {
        }
        @Override
        public void onCancelled(DatabaseError databaseError) {
            throw databaseError.toException();
        }
    });
}

标签: javaandroidfirebasefirebase-realtime-database

解决方案


发生这种情况是因为您fetchMessages()从方法内部调用方法onStart(),这意味着每次您停止然后启动活动时,都会触发此方法并且您最终会获得重复数据。

要解决这个问题,请在方法中移动方法的调用,onCreate()这样即使您从另一个活动返回或调用了该方法,数据也只会显示一次onBackPress()


推荐阅读