数据未正确加载到firebase应用程序中

我在android studio上使用firebase创建了一个应用程序。使用mobile otp进行身份validation后会出现一个searchview。 当用户在搜索视图上搜索时,它将过滤结果并转到回收站视图,依此类推。 在第一次启动活动(即,auth之后的家庭活动)应用程序完美运行。

但我的问题是我的应用程序在一段时间后没有加载数据。包括searchview在内的其他字段也没有用。 此外,应用程序在注销后工作,并在发生此问题后再次登录到应用程序。

有谁知道如何解决它?

public class FragmentHome extends Fragment { private SearchView search; View view; DatabaseReference dataRef; private FirebaseListAdapter firebaseListAdapter; ListView mListView; private TextView text; ArrayList city=new ArrayList(); private int i=0; private String data,val,var; ArrayAdapter adapter; ProgressBar progressBar; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable final Bundle savedInstanceState) { View v= inflater.inflate(R.layout.activity_fragment_home,container,false); if (container!=null){ container.removeAllViews(); } progressBar= (ProgressBar) v.findViewById(R.id.search_pro); search= (SearchView) v.findViewById(R.id.search); search.onActionViewExpanded(); search.setIconified(false); search.setInputType(InputType.TYPE_NULL); search.setQueryHint("Search Docter By City Or Department"); mListView= (ListView) v.findViewById(R.id.mList); mListView.setVisibility(View.INVISIBLE); dataRef=FirebaseDatabase.getInstance().getReference().child("Docters"); adapter=new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, city); mListView.setAdapter(adapter); adapter.notifyDataSetChanged(); dataRef.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { data=dataSnapshot.child("city").getValue(String.class); val=dataSnapshot.child("department").getValue(String.class); if (!city.contains(data)){ city.add(data); } if (!city.contains(val)){ city.add(val); } search.setInputType(InputType.TYPE_CLASS_TEXT); progressBar.setVisibility(View.GONE); adapter.notifyDataSetChanged(); } @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) { data=dataSnapshot.child("city").getValue(String.class); val=dataSnapshot.child("department").getValue(String.class); city.add(data); city.add(val); city.add(var); adapter.notifyDataSetChanged(); } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { } @Override public void onChildMoved(DataSnapshot dataSnapshot, String s) { } @Override public void onCancelled(DatabaseError databaseError) { } }); search.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String text) { return false; } @Override public boolean onQueryTextChange(String text) { if (!text.isEmpty()){ adapter.notifyDataSetChanged(); mListView.setVisibility(View.VISIBLE); adapter.getFilter().filter(text); }else{ mListView.setVisibility(View.INVISIBLE); } return false; } }); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { String itemRef = (String) adapter.getItem(position); search.setVisibility(View.INVISIBLE); mListView.setVisibility(View.INVISIBLE); FragmentTransaction ft=getChildFragmentManager().beginTransaction(); DocterList fragment=new DocterList(); Bundle item=new Bundle(); item.putString("item",itemRef); fragment.setArguments(item); ft.replace(R.id.activity_fragment_home,fragment); ft.addToBackStack(null); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.commit(); } }); return v; } 

}

您在onCreateView中编写的所有代码都应该用onViewCreated编写。

最好将任何子视图分配给onViewCreated中的字段。 这是因为框架会对您进行自动空检查,以确保您的Fragment的视图层次结构已创建并膨胀。

 public class FragmentHome extends Fragment { private SearchView search; View v; DatabaseReference dataRef; private FirebaseListAdapter firebaseListAdapter; ListView mListView; private TextView text; ArrayList city=new ArrayList(); private int i=0; private String data,val,var; ArrayAdapter adapter; ProgressBar progressBar; @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable final Bundle savedInstanceState) { v = inflater.inflate(R.layout.activity_fragment_home,container,false); if (container!=null){ container.removeAllViews(); } return v; } @Override public void onViewCreated(View view, @Nullable Bundle savedInstanceState) { super.onViewCreated(view, savedInstanceState); progressBar= (ProgressBar) v.findViewById(R.id.search_pro); search= (SearchView) v.findViewById(R.id.search); search.onActionViewExpanded(); search.setIconified(false); search.setInputType(InputType.TYPE_NULL); search.setQueryHint("Search Docter By City Or Department"); mListView= (ListView) v.findViewById(R.id.mList); mListView.setVisibility(View.INVISIBLE); dataRef=FirebaseDatabase.getInstance().getReference().child("Docters"); adapter=new ArrayAdapter(getActivity(), android.R.layout.simple_list_item_1, city); mListView.setAdapter(adapter); adapter.notifyDataSetChanged(); dataRef.addChildEventListener(new ChildEventListener() { @Override public void onChildAdded(DataSnapshot dataSnapshot, String s) { data=dataSnapshot.child("city").getValue(String.class); val=dataSnapshot.child("department").getValue(String.class); if (!city.contains(data)){ city.add(data); } if (!city.contains(val)){ city.add(val); } search.setInputType(InputType.TYPE_CLASS_TEXT); progressBar.setVisibility(View.GONE); adapter.notifyDataSetChanged(); } @Override public void onChildChanged(DataSnapshot dataSnapshot, String s) { data=dataSnapshot.child("city").getValue(String.class); val=dataSnapshot.child("department").getValue(String.class); city.add(data); city.add(val); city.add(var); adapter.notifyDataSetChanged(); } @Override public void onChildRemoved(DataSnapshot dataSnapshot) { } @Override public void onChildMoved(DataSnapshot dataSnapshot, String s) { } @Override public void onCancelled(DatabaseError databaseError) { } }); search.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String text) { return false; } @Override public boolean onQueryTextChange(String text) { if (!text.isEmpty()){ adapter.notifyDataSetChanged(); mListView.setVisibility(View.VISIBLE); adapter.getFilter().filter(text); }else{ mListView.setVisibility(View.INVISIBLE); } return false; } }); mListView.setOnItemClickListener(new AdapterView.OnItemClickListener() { @Override public void onItemClick(AdapterView parent, View view, int position, long id) { String itemRef = (String) adapter.getItem(position); search.setVisibility(View.INVISIBLE); mListView.setVisibility(View.INVISIBLE); FragmentTransaction ft=getChildFragmentManager().beginTransaction(); DocterList fragment=new DocterList(); Bundle item=new Bundle(); item.putString("item",itemRef); fragment.setArguments(item); ft.replace(R.id.activity_fragment_home,fragment); ft.addToBackStack(null); ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE); ft.commit(); } }); } 

progressBar= (ProgressBar) v.findViewById(R.id.search_pro); ==>视图只会在onViewCreated