我正在SearchTextView OnQueryListener中调用OnChildAdded
方法,在Dialog中搜索和显示记录,但当我运行代码时,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);}
this
没有意义。在我提供的第二个链接中,您可以看到如何保留对侦听器的引用,然后使用该引用取消注册。 - Frank van Puffelen