gpt4 book ai didi

android - Firebase 调用 onChildAdded 两次

转载 作者:行者123 更新时间:2023-12-02 15:48:33 24 4
gpt4 key购买 nike

我正在 SearchTextView OnQueryListener 中调用 OnChildAdded 方法,该方法使用 OnChildAdded 方法在对话框中搜索和显示记录。但是当我运行代码时,OnChildAdded 方法似乎调用内部代码两次,就像对话框提示两次一样,日志语句也是如此。

这是该方法的代码:

searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String query) {
mSearchQuery = query.trim();
mDatabaseReference.orderByChild("name").startAt(mSearchQuery).addChildEventListener(new ChildEventListener() {
@Override
public void onChildAdded(DataSnapshot dataSnapshot, String s) {

student = dataSnapshot.getValue(Student.class);
FragmentManager fragmentManager = getActivity().getSupportFragmentManager();
EnrollOperationFragment enrollOperationFragment = EnrollOperationFragment.newInstance(student.getName(),student.getId());
enrollOperationFragment.show(fragmentManager,ENROLL_OPERATION);}

最佳答案

onChildAdded 将为与您的查询匹配的每个子节点调用。但还要注意,每次用户提交搜索文本时,您都会添加一个新的子监听器。因此,如果他们提交两次,您就有两个监听器,并且您的 onChildAdded 将为每个子项调用两次(每个监听器一次)。然后,当他们再次提交搜索时,它将添加第三个监听器。等等。

解决方案是在附加新监听器之前分离前一个监听器。请参阅documentation for detaching listeners 。或者使用她的代码来获取灵感:How stop Listening to firebase location in android

关于android - Firebase 调用 onChildAdded 两次,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42729163/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com