【问题标题】:My TextView to display an array isn't working?我的 TextView 显示数组不起作用?
【发布时间】:2016-01-16 17:12:04
【问题描述】:

在我的应用程序中,我有一个方法旨在将新字符串放入第一个空索引中的字符串数组中。然后将其设计为在一个有十行的文本框中显示该数组。由于某种原因,这不起作用。我使用 Log 来显示 Logcat 中的数组内容,但这没有出现。所以我想我会来这里问是否有人能看到任何会导致它不起作用的明显错误?如果您需要更多详细信息,例如使用数组的类,请告诉我! :)

方法:

     String playerInvTemp[] = thePlayer.getPlayerInv();
               for (int i=0; i < playerInvTemp.length; i++)
               {
                   if ((!playerInvTemp[i].isEmpty()) || playerInvTemp[i] == null)
                   {
                       thePlayer.setPlayerInv("Torch", i);
                       Log.i(tag,thePlayer.getPlayerInv(1));
                       playerInvTemp = thePlayer.getPlayerInv();
                       Log.i(tag,playerInvTemp[1]);


                       StringBuilder builder = new StringBuilder();

                       for (String s : playerInvTemp) {
                           builder.append(s + " ");
                           invText.setText(builder.toString());
                       }

                       break;
                   }
               }

【问题讨论】:

  • “空索引”是指“空项目”。
  • 您必须使用调试器逐步完成并查看发生了什么,因为您说日志未显示,所以我在想的是 playerInvTemp.length 为 0,而您的 for 循环永远不会迭代,也许你的 thePlayer.getPlayerInv() 没有返回任何东西
  • 可能不是。此时在程序中它应该只有十个空字符串,但它仍然会返回 {"","","" etc.},不是吗?
  • 这就是问题所在(对于 (int i=0; i
  • 只有在找到一个空项目时,您的方法才会显示连接的数组(为什么不简单地使用join()?)。 id 会为找到的每个空项目继续这样做。

标签: java android arrays methods


【解决方案1】:
  1. 在循环内部更改您正在迭代的数组是一种非常糟糕的做法。
  2. 可能你有一个空字符串数组,在这种情况下你的条件是:

    ((!playerInvTemp[i].isEmpty()) || playerInvTemp[i] == null)

仍然是假的。也许你的意思是:

(!(playerInvTemp[i].isEmpty() || playerInvTemp[i] == null))

【讨论】:

  • 是的,我更改了数组,以便在创建时填充“空”而不是“”。但是,它似乎仍然无法正常工作。
  • 您是否按照我的建议更改了条件?
  • 我有。仍然没有变化。
  • 在 playerInvTemp 定义后添加此代码:for (int i=0; i &lt; playerInvTemp.length; i++) playerInvTemp[i] = "a"; 您的问题是您的数组值为空,您从不输入 if 条件。
猜你喜欢
  • 2020-07-21
  • 2023-03-18
  • 1970-01-01
  • 1970-01-01
  • 2019-01-10
  • 1970-01-01
  • 2018-06-15
  • 1970-01-01
  • 2021-05-17
相关资源
最近更新 更多