在Button Click中访问字符串数组

时间:2017-08-09 13:55:01

标签: android arrays string

我有一个字符串数组:

                   @Override
                    public void accept(List<File> files) throws Exception {
                        int size = files.size();
                        while (size-- > 0) {
                            arrFilePaths[size]=files.get(size).toString();
                        }
                    }

我有一个功能,它返回字符串并将其添加到数组:

  @Override
        public void onClick(View v) {
                    if(arrFilePaths[0]==null){
                       //some code
                    }else {
                        //some code
                    }

现在我有一个按钮,我正在访问其中的数组:

arrFilePaths

现在问题是arrFilePaths只在按钮点击时返回字符串。大多数时候它返回null。数据总是在按钮点击之前插入到数组中。所以我不知道发生了什么。

是的,我已经在调试模式下进行了测试,并且{{1}}正在插入数据,但是在按钮之后单击它会显示为null(即使我使用相同的变量)。 任何人都可以解释这个奇怪的输出吗?谢谢!

4 个答案:

答案 0 :(得分:2)

我不确定你是如何看待这些价值观的,因为对我来说这似乎是下面代码中的逻辑问题

while (size-- > 0) {
   arrFilePaths[size]=files.get(size).toString();
 } 

假设您的尺寸为3,那么您将以相反的顺序到达此处。所以你填补了第3和第2位和第1位,但是只要大小变为0,你的条件就会失败并且它永远不会为第0个元素设置值。

然后你的if条件检查 -

if(arrFilePaths[0]==null)

所以它检查第0个元素是否为null,这显然是因为你的while循环没有让它进入那里。因此没有数据。

因此,如果您的尺寸超过4,那么您的第0个元素将被填充,因为arrFilePaths只能使用4个元素

答案 1 :(得分:2)

据我所知,每当List<File> files元素少于arrFilePaths数组时,您就会变为空。

想象一下这是文件列表[L1 , L2 , L3] 你的数组是[A1 , A2 , A3 , A4 , A5 , A6]

当你从头开始写作时,files末尾的最后一个元素将出现在arrFilePaths的最后位置,所以就这么强。

最后,数组看起来像[null, null, null, L1 , L2 , L3]

显然,这个数组的第一个元素是null。

答案 2 :(得分:0)

在我看来,你应该修改这一行

while (size-- > 0)
像这样

while (size-- >= 0) {

答案 3 :(得分:0)

只需将while替换为fori,我就完全没有理由为什么要将该数组从末尾填充到前端。