【问题标题】:Calling a textview from a textview array results null从 textview 数组调用 textview 结果为 null
【发布时间】:2019-08-19 05:14:23
【问题描述】:

我制作了 5 个文本视图,从 textview1 到 textview5。 然后我创建了一个这样的 textview 数组:-

TextView tvArr[] = new TextView[] { textview1, textview2, textview3, textview4, textview5 };

当我使用 setText 方法时,它会抛出 NullPointerException -

tvArr[3].setText("Done");

请帮我找出我错过了什么,并提前感谢...

编辑:我想知道 set text 方法是如何抛出 NullPointerException 的,我不是要对我的代码进行故障排除...

【问题讨论】:

  • 我不明白这里抛出 NullPointerException 是什么?
  • 你必须在数组槽中放置一个对象。您正在尝试设置不存在的内容。
  • 您是否在将所有文本视图添加到数组之前对其进行初始化?
  • “我做了 5 个文本视图,从 textview1 到 textview5。” 究竟如何?您可以编辑问题并添加代码。仅仅输入TextView textview1; 是不够的。该对象将是null。如果您在布局 XML 文件中定义了 TextView,您可能希望使用 findViewById() 来查找它们。如果你在某个地方犯了错误,findViewById() 可能会返回null,例如使用错误的 id 调用它或在错误的地方调用它,例如 setContentView()

标签: android arrays nullpointerexception textview


【解决方案1】:

在声明文本视图数组后,您必须初始化其中的项目。使用任一

tvArr[3] = new TextView(this);
tvArr[3].setText("Done");
parentLayout.addView(tvArr[3]);

tvArr[3] = (TextView)findViewById(R.id.txt_view);
tvArr[3].setText("Done");

【讨论】:

  • 向数组添加对象应该像 TextView[] tvArr = new TextView[5]; tvArr[0] = textView1; tvArr[1] = textView2;等然后你可以将它用作 tvArr[0].setText("Done");
  • 这些不是唯一可能的方法。例如,问题 cmets 中链接的 Oracle Java 文档页面提供了与 OP 使用的类似方式(尽管使用原语)的示例:int[] anArray = {100, 200, 300, 400, 500, 600, 700, 800, 900, 1000};。它应该是完全有效的。当然假设添加到数组中的对象是非空的。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-01-07
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多