0
getTitle()을 호출 할 때 어떤 이유로 인해 항상 null이 반환됩니다. ValueEventListener가 전혀 추가되지 않는 것 같습니다.ValueEventListener.onDataChange()가 호출되지 않습니다
수신기에서 제목의 값을 디버깅하거나 인쇄 할 때 인쇄되지 않습니다 ... onCancelled()가 아니라 ValueEventListener가 호출됩니다.
문제가 무엇인지 아는 사람이 있습니까? 보기에서 ChildEventListener를 직접 사용할 때 제대로 작동하므로 데이터베이스 연결이 아닙니다.
JSON 개체 :
"about" : {
"info" : "Lorem ipsum dolor sit amet, consectetur adipiscing elit. In non suscipit risus. Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse in lectus consectetur nisl molestie luctus. Nulla commodo tincidunt dui ut dignissim. Suspendisse sapien lacus, tristique non ultricies nec, accumsan nec ipsum. Integer feugiat faucibus eros. Mauris augue ex, tincidunt a elit nec, pharetra aliquam nisl. Quisque viverra fringilla pulvinar. Nulla et vehicula ipsum, sed ultrices est. Maecenas bibendum ipsum quis erat cursus euismod. Nullam tempor diam eu eros ultrices, vel efficitur lacus bibendum. Cras auctor erat sem, quis auctor libero feugiat sit amet. Fusce semper odio at lacus faucibus, a feugiat massa suscipit. Pellentesque id est id massa faucibus faucibus quis eget libero.",
"title" : "Vårt hotell er best i hele verden"
},
문제 분류 :
public class AboutUsObserver extends AboutUs implements MyObserverInterface {
private List<DataChangedListener> listeners = new ArrayList<>();
public AboutUsObserver(Query mRef){
mRef.addValueEventListener(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot child : dataSnapshot.getChildren()){
if (child.getKey().equals("title")) {
String title = child.getValue(String.class);
setTitle(title);
}
else if (child.getKey().equals("info")) {
String info = child.getValue(String.class);
setInfo(info);
}
}
for (DataChangedListener listener : listeners)
listener.onDataChanged();
}
@Override
public void onCancelled(DatabaseError databaseError) {
}
});
}
@Override
public void addDataChangedListener(MyObserverInterface.DataChangedListener dataChangedListener) {
listeners.add(dataChangedListener);
}
@Override
public void removeListenerAt(int index) {
listeners.remove(index);
}
@Override
public void removeListeners() {
listeners = new ArrayList<>();
}
}
AboutUs 클래스하십시오 단편에서
public class AboutUs {
public String title;
public String info;
// Required default constructor for Firebase object mapping
@SuppressWarnings("unused")
public AboutUs(){}
public AboutUs (String title, String info) {
this.title = title;
this.info = info;
}
public void setTitle(String title){
this.title = title;
}
public void setInfo(String info){
this.info = info;
}
public String getTitle(){
return title;
}
public String getInfo(){
return info;
}
}
onCreateView()
DatabaseReference mRef = FirebaseDatabase.getInstance().getReference();
final DatabaseReference aboutRef = mRef.child("about");
final TextView TITLE = (TextView) view.findViewById(R.id.aboutTitle);
final TextView INFO = (TextView) view.findViewById(R.id.aboutInfo);
final AboutUsObserver aboutUsObserver = new AboutUsObserver(mRef);
aboutUsObserver.addDataChangedListener(new MyObserverInterface.DataChangedListener() {
@Override
public void onDataChanged() {
String test = aboutUsObserver.getTitle();
TITLE.setText(aboutUsObserver.getTitle());
INFO.setText(aboutUsObserver.getInfo());
}
});
,
와우 .. 내가, 시간 디버깅 것을 놓친 믿을 수 없다. 음, 8 시간 동안 똑바로 프로그래밍 할 때 일어날 수있는 일이라고 생각합니다. 고맙습니다! –