我甚至使用过List,但仍然得到空指针,但如果我使用livedata,它会在for a循环中成功更新。它不会返回NULL。为什么只有list或Arraylist返回null
fun List(): ArrayList<Bank> {
val banklist = ArrayList<Bank>()
val reference = FirebaseDatabase.getInstance().reference
.child("groups")
.child(group.group_id)
.child("financials")
.child("cash")
.child("bank")
reference.addValueEventListener(object : ValueEventListener {
override fun onCancelled(p0: DatabaseError) {
}
override fun onDataChange(dataSnapshot: DataSnapshot) {
for (singleSnapshot in dataSnapshot.children) {
Log.d(
"Data", "banks found: "
+ singleSnapshot.value
)
val bank = singleSnapshot.getValue(Bank::class.java)
banklist.add(bank!!)
bankListLivedata.value = banklist //updates perfectly
}
Log.d(
"Data", "banksList1 ${banklist[0].bank_account} "//This is printing in the log
)
}
}
)
Log.d(
"Data", "banksList2 ${banklist[0].bank_account} " //This is throwing null pointer exception
)
return banklist //this is null
//if I return banklistLivedata it works perfectly and doesn't throw null
}
日志记录中抛出的NPE是因为banklist
在更改侦听器中被修改。
Log.d(
"Data", "banksList2 ${banklist[0].bank_account} " //This is throwing null pointer exception
)
当没有进行任何更改时,或者在侦听器内部,可迭代的DataSnapshot.Children
为空-BankList
保持为空。因此,当您调用list[index]时,它将返回null
,因为没有找到任何东西,并且它将抛出一个NPE,因为您对null
调用.bank_account
。
return banklist //this is null
我很确定方法末尾的banklist
不是空的。因为前面的代码抛出了一个异常,所以从未到达该部分。
问题内容: 我是一名编程初学者,对函数的返回值有疑问。 我正在学习Java。 我已经附上了我的书中具有经典选择排序功能的代码。 现在显然来自本书的代码可以正常工作。但是,主要功能中的以下三行是我的问题的基础: int [] a = new int [] {1,9,2,8,3,7,4,6,5}; 排序(a); if(ascending(a))System.out.println(“ Works”
下面的代码抛出,但我不明白为什么,该对象不是null。
问题内容: 我正在尝试使用一个字段来获取手动输入,然后使用该数据。 我发现的所有资料都声称我应该使用该函数,但是我还没有找到一个简单的可运行的迷你示例,因此无法正常工作。 我希望有人可以给我打电话,告诉我我做错了什么。这是一个迷你文件: 这给了我一个我可以输入的字段,但是一旦输入数据我就什么也不能做。 我怀疑我的代码不起作用,因为最初它是空的。但是,一旦输入了输入数据,我该如何访问呢? 问题答案:
问题内容: 我有一个箭头函数,看起来像这样(简化): 但是当我调用它时,我得到: 为什么? 例: ( 注意: 对于上述带有箭头功能的 特定 问题,这是一个干净,规范的重复目标。) 问题答案: 当您使用箭头函数的函数主体版本(带有)时,没有暗示。您必须指定它。当您使用 简洁 主体(no )时,主体表达式的结果将由函数隐式返回。 因此,您可以使用显式的方式编写该代码: 或简洁的主体: 例子: 略 切线
我使用的是我的代码中有两个可观察的对象 观察值不是来自请求,而是来自 我需要根据这个逻辑将序列组合/转换成一个单一的可观察值: 如果序列,或,-需要返回新的可观察的否则需要返回 我试图使用来实现: 但问题是我的
问题内容: 如果我在构造函数中返回一些值或对象,那么var会得到什么? 在两种情况下都会得到什么n? 其实这是一个测验问题,答案是什么? 自定义对象构造函数返回什么? a)新实例化的对象 b)未定义-构造函数不返回值 c)不论return语句是 d)等于return语句是什么;新实例化的对象(如果没有return语句) 问题答案: 我发现了这个很棒的链接: 上面提到的第二点魔术是构造函数返回特定的