2016-12-12 1 views
1

Firebase에서 데이터를 가져 오는 조각으로 안드로이드 앱을 만들고 있습니다.조각에 Firebase AddValueEventListener를 설정할 위치는?

현재 메서드 내에서메서드를 설정했습니다.이 메서드는 처음에는 조각에 액세스 할 때 Firebase에서 데이터를 가져올 수 있지만, 응용 프로그램에서 다른 조각을보고 원래 조각으로 돌아가려면 변경할 때, Firebase 데이터가 화면을 회전시킬 때까지 사라집니다.

이 문제를 해결하려면 내 AddValueEventListener 방법을 사용해야합니까?

+0

데이터가 항상 살아 있는지 확인 하시겠습니까? –

+0

나는 당신이 무엇을 의미하는지 모르겠다. 그러나 그가 특정 조각에 접근 할 때마다 사용자에게 표시되기를 바란다. –

+0

나는 그 조각 내에서 현재 사용하고있는 FragmentPagerAdapter를 사용하여 문제를 인식했다. 감사! –

답변

3

짧은 대답 :onResume 메서드에 추가하고 메서드에서 제거하십시오.

긴 대답 : 조각이 새로운 조각을 당신이 그것을 표시 할 때마다 만들 필요가 없습니다 않도록 대부분의 경우 조각의 인스턴스를 유지하는 FragmentManager에 의해 관리됩니다. 따라서 onCreate, onCreateView, onStart 등의 메서드는 단편 작성 또는 구성 변경, 즉 화면 회전시 한 번 호출됩니다.

한편 onResume 메서드는 포커스가있는 부분을 호출 할 때마다 호출되어 addValueEventListener을 추가하면 항상 호출됩니다. 그러나이 방법은 다중 값의 짝수 수신기를 추가하므로 removeEventListener은 방법으로 사용하는 것이 좋습니다.

참조 : https://developer.android.com/guide/components/fragments.html

0

onCreateView() 조각 방법 안에 addValueEventListener을 추가하기 만하면됩니다. 그런 다음 ArrayList 또는 다른 컬렉션 클래스에 값을 저장하십시오. 이 ArrayList의 값을 Fragment에 표시하면됩니다.

알림 : 값 outside the onDataChange()addValueEventListener으로 저장할 수 없습니다. 따라서 arraylist param을 사용하여 하나의 메소드를 작성하고 onDataChange() 메소드의 값을 새로 작성한 메소드로 전달하십시오. 이렇게하면 데이터가 null이 아니어야합니다. NullPointerException

자세한 내용은 doc을 참조하십시오.

관련 문제