gpt4 book ai didi

java - 从监听器中调用 .runTransaction() 时出现 NullPointerException

转载 作者:行者123 更新时间:2023-12-02 02:22:02 26 4
gpt4 key购买 nike

我收到一个错误,该错误在我的设备屏幕上显示为 NullPointerException(它没有出现在日志中)。

本质上,我是从 .addListenerForSingelValueEvent() 中调用 .runTransaction() 方法:

    mPollsref.addListenerForSingleValueEvent(new ValueEventListener() {
@Override
public void onDataChange(DataSnapshot dataSnapshot) {
for (DataSnapshot d : dataSnapshot.getChildren()){
mPollsref.child(d.getKey()).child(VOTE_COUNT).runTransaction(new Transaction.Handler() {
@Override
public Transaction.Result doTransaction(MutableData mutableData) {
mutableData.setValue((long) mutableData.getValue() + 1);
return Transaction.success(mutableData);
}

我收到以下错误。仅仅是因为我从监听器中调用 .runTransaction() 吗?我找不到实际上是什么 null 以及如何解决:

enter image description here

最佳答案

您的事务处理程序必须能够处理在 MutableData 中使用 null 值进行的调用,因此您需要检查这一点并做出相应的响应。

请引用documentation 。特别是,注释中写道:

Note: Because doTransaction() is called multiple times, it must be able to handle null data. Even if there is existing data in your remote database, it may not be locally cached when the transaction function is run, resulting in null for the initial value.

更具体地说,在您的情况下,您尝试将 mutableData.getValue() 返回的 null 转换为 long。 Java 编译器在内部将其重写为在对象上调用 longValue(),首先强制转换为 Long,这就是导致您看到的错误消息的原因。

关于java - 从监听器中调用 .runTransaction() 时出现 NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48370595/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com