- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
出于某种原因,当我在 fragment 中调用 getTitle() 时,它总是返回 null。似乎根本没有添加 ValueEventListener。
当我在监听器内调试或打印 title 的值时,它不会打印...onCancelled() 也不会打印,但会调用 ValueEventListener。
有谁知道问题出在哪里吗?当我直接在 View 中使用 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;
}
}
在 fragment 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());
}
});
最佳答案
AboutUsObserver
预计子级 title
和 info
会发生更改。它应该监听位置 about
的更改。但是您正在初始化它以监听根位置:
DatabaseReference mRef = FirebaseDatabase.getInstance().getReference();
...
final AboutUsObserver aboutUsObserver = new AboutUsObserver(mRef);
更改为:
final AboutUsObserver aboutUsObserver = new AboutUsObserver(aboutRef );
关于java - ValueEventListener.onDataChange() 不会被调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43960352/
我正在尝试使用 Firebase 创建餐厅和酒吧的评级系统。到目前为止,我能够阅读和书写个人评分。我遇到的问题是,为了计算特定餐厅的平均评级,我需要获取存储的评级数量和存储的所有评级的总值(value
我正在为 Android Wear 构建一个表盘。表盘偶尔会向掌上电脑询问信息,这些信息将用于更新表盘。不幸的是,onDataChanged 和 onMessageReceived 只在表盘第一次加载
我使用这段代码来检查我的数据库中是否有特定数据: mDatabase.child("TempTransaction").child(MainActivity.User.getID()).addVa
这是我的代码: public ArrayList getArray() { final FirebaseDatabase database = FirebaseDatabase.getInst
我正在尝试数据项 APi,这是我的代码 mGoogleApiClient = new GoogleApiClient.Builder(this) .addConnectionC
出于某种原因,当我在 fragment 中调用 getTitle() 时,它总是返回 null。似乎根本没有添加 ValueEventListener。 当我在监听器内调试或打印 title 的值时,
这个问题已经有答案了: Setting variable inside onDataChange in Firebase (singleValue Listener) (3 个回答) 已关闭 5 年前
这是我的ArrayAdapter: public class SackViewAdapter extends ArrayAdapter { private ArrayList postInfo
我正在尝试从用户帐户读取数据列表,如下所示: 但是 onDataChange 监听器没有被调用。 我想获取“checked”和“desc”的值;但是,当我添加如下所示的 ListenForSingle
尽管接收快照并在 onDataChange() 函数中将数据添加到 ArrayList 中,但该函数没有返回任何数据,但最终它返回 大小为 0 的 ArrayList。 List feed_data(
我正在我的 Android 应用中实现 Firebase。 我有两种方法可以执行一些同步操作。方法A:查询事物列表。方法B:执行写入和读取。 方法一: final Firebase ref = sFi
我正在尝试从我的 Firebase 数据库中获取数据我有两个 fragment ,一个用于注册,另一个用于登录我在将数据插入 Firebase 时没有问题,但不知何故我无法从中返回数据 这些是我登录
我正在努力使用 onDataChange 访问从数据库返回的信息。我知道这是由于其异步性质,但我需要将这些值存储在某处以便在代码完成后访问。 我在 Firebase 数据库中存储了一个 user 子级
我有一个用于测试 Firebase 的基本程序。我有 2 个按钮:第一个是写入 Firebase 数据库“a”,第二个是写入“b”,我正在使用服务检查它们: myRef.addValueEventLi
如果我的数据库仍在加载,则显示加载对话框。我想让我的聊天应用程序正常工作。我发现我的问题将通过覆盖 FirebaseRecyclerAdapter 中的 onDataChanged() 来解决,如下面
这个问题在这里已经有了答案: getContactsFromFirebase() method return an empty list (1 个回答) 关闭 4 年前。 我有一个 boolean
我想问问是否有人可以为我解决这个问题..因为我一直在搜索并尝试自己修复它但是..没有.. 这是我的 logcat 错误: E/AndroidRuntime: FATAL EXCEPTION: main
我有一个应用程序,我在其中使用 firebase 来存储我的数据。 我的数据在使用 OnDataChange 方法的 fragment 中检索,我在单独的 Activity 中将数据添加到我的 fir
关于 Firebase ValueEventListener,我遇到了一个非常奇怪的情况。 当手机连接到互联网时,它工作正常。但是当它离线时,它不会调用 onDataChange。 这段代码即使在离线
我正在尝试从 firebase 数据库检索数据,当您进入应用程序并且从不监听 OnDataChange 时调用此方法。如果我将新图像上传到 firebase,则会调用 OnDataChange 并显示
我是一名优秀的程序员,十分优秀!