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<>();
}
}
弊社についてクラス:断片で
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時間プログラムするときに起こるかもしれないと思います。ありがとうございました! –