Java 签入函数时数组大小错误
我试图从稀疏布尔数组中的列表视图中获取所有选中项,并将该数组传递给一个函数,该函数向用户显示一个对话框,然后单击“是”在数据库中为稀疏数组中的选定项执行一些操作 我面临的问题是,在调用函数之前,我检查稀疏数组的大小,它显示了正确的大小,但我传递给它的函数,一旦被调用,它就会显示大小为0。我不知道为什么会这样 以下是我正在做的--> 这就是我要传递给的方法--> 对于第一个日志,我得到了正确的大小,但在第二个日志中为0。我不知道出了什么问题。任何帮助都将不胜感激。因为没有,我猜你的流量不是你所想的。将堆栈跟踪添加到日志记录中,以便查看谁和何时调用confirmdelection()方法Java 签入函数时数组大小错误,java,android,arrays,sparse-array,Java,Android,Arrays,Sparse Array,我试图从稀疏布尔数组中的列表视图中获取所有选中项,并将该数组传递给一个函数,该函数向用户显示一个对话框,然后单击“是”在数据库中为稀疏数组中的选定项执行一些操作 我面临的问题是,在调用函数之前,我检查稀疏数组的大小,它显示了正确的大小,但我传递给它的函数,一旦被调用,它就会显示大小为0。我不知道为什么会这样 以下是我正在做的--> 这就是我要传递给的方法--> 对于第一个日志,我得到了正确的大小,但在第二个日志中为0。我不知道出了什么问题。任何帮助都将不胜感激。因为没有,我猜你的流量不是你所想的
另一个建议是确保使用相同的对象。为日志记录添加toString,以查看流的顺序以及使用的对象是否相同。毕竟,同一个对象确实返回了相同的结果,因此看起来确实存在一些差距,您正在使用不同的对象。您确定读取的日志正确吗?如果是这样,唯一的解释就是并发修改。是的,我对读取正确的日志持肯定态度。但这不应该是因为当函数confirmdelection()的逻辑在开关盒中时,它工作得很顺利,但后来我决定将其分解,我面临这个问题。我脑子里有解决办法,但只是好奇,想知道为什么会发生这种情况。调试一下,看看发生了什么。@AjeetKhadke很抱歉,这又是一次行为不正确。当我调试它时,稀疏数组中的键和值的数量是正确的,但是它的大小是0,这真的很奇怪。没有这个尺寸,我不能把所有的钥匙都圈起来。有什么想法吗?1)您看到的条目是否标记为已删除?2) 可以从多个线程访问它吗?3) 如果这两个想法都没有用,就把程序简化成一个简单的程序。
SparseBooleanArray checkedPositions;
switch (item.getId()) {
case delete :
checkedPositions = listView.getCheckedItemPositions();
Log.d(TAG, checkedPositions.size());
confirmDeletion(checkedPositions);
break;
}
confirmDeletion(final SparseBooleanArray checkedPositions) {
Log.d(TAG, checkedPositions.size());
}