Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/344.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 签入函数时数组大小错误_Java_Android_Arrays_Sparse Array - Fatal编程技术网

Java 签入函数时数组大小错误

Java 签入函数时数组大小错误,java,android,arrays,sparse-array,Java,Android,Arrays,Sparse Array,我试图从稀疏布尔数组中的列表视图中获取所有选中项,并将该数组传递给一个函数,该函数向用户显示一个对话框,然后单击“是”在数据库中为稀疏数组中的选定项执行一些操作 我面临的问题是,在调用函数之前,我检查稀疏数组的大小,它显示了正确的大小,但我传递给它的函数,一旦被调用,它就会显示大小为0。我不知道为什么会这样 以下是我正在做的--> 这就是我要传递给的方法--> 对于第一个日志,我得到了正确的大小,但在第二个日志中为0。我不知道出了什么问题。任何帮助都将不胜感激。因为没有,我猜你的流量不是你所想的

我试图从稀疏布尔数组中的列表视图中获取所有选中项,并将该数组传递给一个函数,该函数向用户显示一个对话框,然后单击“是”在数据库中为稀疏数组中的选定项执行一些操作

我面临的问题是,在调用函数之前,我检查稀疏数组的大小,它显示了正确的大小,但我传递给它的函数,一旦被调用,它就会显示大小为0。我不知道为什么会这样

以下是我正在做的-->

这就是我要传递给的方法-->

对于第一个日志,我得到了正确的大小,但在第二个日志中为0。我不知道出了什么问题。任何帮助都将不胜感激。

因为没有,我猜你的流量不是你所想的。将堆栈跟踪添加到日志记录中,以便查看谁和何时调用confirmdelection()方法


另一个建议是确保使用相同的对象。为日志记录添加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());
}