Java 在循环中以编程方式设置textview时出错
我想以编程方式设置文本视图,因为每个文本视图中都有一个特定的上下文,它基于每次启动应用程序时都会发生变化的计算。它们的名称是Java 在循环中以编程方式设置textview时出错,java,android,Java,Android,我想以编程方式设置文本视图,因为每个文本视图中都有一个特定的上下文,它基于每次启动应用程序时都会发生变化的计算。它们的名称是textView1、textView2、textView3…,我想在循环中设置它们,但出现以下错误: java.lang.RuntimeException: Unable to resume activity {com.test.base/com.test.base.MyActivity}: java.lang.NullPointerExc
textView1、textView2、textView3…
,我想在循环中设置它们,但出现以下错误:
java.lang.RuntimeException:
Unable to resume activity {com.test.base/com.test.base.MyActivity}:
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.widget.TextView.setText(java.lang.CharSequence)' on a null object reference
我的循环:
int i = 1;
for (i = firstDayNumber; i <= daysInMonth; i++) {
TextView tv1 = (TextView)findViewById(R.id.textView + i);
tv1.setText("Hello");
}
这不是动态获取资源的方法。你应该这样做:
int resId = getResources().getIdentifier("textView" + i, "id", this.getPackageName());
for (i = 1; i <= 5; i++) {
int resId = getResources().getIdentifier("textView" + i , "id", this.getPackageName());
TextView t = (TextView)findViewById(resId);
t.setText("Hello");
}
试着这样做:
int resId = getResources().getIdentifier("textView" + i, "id", this.getPackageName());
for (i = 1; i <= 5; i++) {
int resId = getResources().getIdentifier("textView" + i , "id", this.getPackageName());
TextView t = (TextView)findViewById(resId);
t.setText("Hello");
}
for(i=1;i您无法获得这样的文本视图。请使用“Hashmap”进行操作。将图像放入Hashmap并在循环中获取Hashmap项。这是最好的方法
private Map< Integer, Integer> map = new HashMap<>();
map.put(0, R.drawable.p1);
map.put(1, R.drawable.p10);
map.put(3, R.drawable.p11);
map.put(4, R.drawable.p12);
map.put(5, R.drawable.p13);
map.put(6, R.drawable.p3n);
map.put(7, R.drawable.p4);
map.put(8, R.drawable.p5);
它重新生成可绘图项。我在问题中添加了XML。顶部还有一行-int firstDayNumber=一些计算;
firstDayNumber和daysInMonth的值是什么?firstDayNumber=介于9和16之间,daysInMonth=介于28和31之间您有5个文本视图,numberd从1到5。您的循环从9开始,那么您将如何nd textView1这种方式?还有,你的循环可能有5次以上的迭代,那么会发生什么呢?:D好的,明白了。但是我将firstDayNumber设置为1,daysInMonth设置为5,仍然得到相同的错误。好的,那么你能告诉我如何将imageview保存到hashmap中吗?
map.get(i);