ListenerForSignleValueEvent和ValueEventListener永远不会在Android中触发

时间:2017-04-30 19:29:14

标签: android firebase firebase-realtime-database

所以我一直在我的应用程序中使用ValueEventListeners和ListenerForSignleValueEvent来从Firebase中提取数据。根据我的理解,应该立即调用onDataChanged()方法,并且这些方法一直在我的所有其他页面上工作。出于某种原因,它在连接到DatabaseReference之后也没有进入onDataChanged,也没有进入Firebase并弄乱数据。我知道onStart()正在工作,因为onClick for my按钮运行正常。

public class DocumentsPageFragment extends Fragment {
final DatabaseReference groupsReference = FirebaseDatabase.getInstance().getReferenceFromUrl("https://database.firebaseio.com/groups");

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, Bundle savedInstanceState) {
    return inflater.inflate(R.layout.document_page,container,false);
}

@Override
public void onStart(){
    super.onStart();

    groupsReference.addListenerForSingleValueEvent(new ValueEventListener() {
        @Override
        public void onDataChange(DataSnapshot dataSnapshot) {
            String[] groupNames;
            ArrayList<Group> groupArrayList = new ArrayList<Group>();

            for (DataSnapshot group:dataSnapshot.getChildren()){
                Group currentGroup = group.getValue(Group.class);
                groupArrayList.add(currentGroup);
            }

            if(groupArrayList!= null && groupArrayList.size()<0){
                groupNames = new String[groupArrayList.size()];

                int i = 0;
                for (Group group:groupArrayList){
                    groupNames[i] = group.getName();
                    i++;
                }
            }
            else{
                groupNames = new String[0];
            }

            final ListView groupsListView = (ListView) getActivity().findViewById(R.id.documents_groups_listview);

            ArrayAdapter<String> groupListArrayAdapter =
                    new ArrayAdapter<String>(getActivity(),android.R.layout.simple_list_item_1,groupNames);
            groupsListView.setAdapter(groupListArrayAdapter);

            AdapterView.OnItemClickListener groupListViewClickListener =
                    new AdapterView.OnItemClickListener() {
                        @Override
                        public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
                            openSelectedGroupsDocuments(groupsListView.getItemAtPosition(position).toString());
                        }
                    };

        }

        @Override
        public void onCancelled(DatabaseError databaseError) {

        }
    });

    Button uploadButton = (Button) getActivity().findViewById(R.id.documents_upload_doc_button);

    uploadButton.setOnClickListener(new Button.OnClickListener(){
        public void onClick(View view){
            DocumentUploadFragment fragment = new DocumentUploadFragment();
            FragmentManager fragmentManager = getFragmentManager();
            fragmentManager.beginTransaction().replace(R.id.flContent,fragment).commit();
        }
    });

}

0 个答案:

没有答案