Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/188.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 在循环中以编程方式设置textview时出错_Java_Android - Fatal编程技术网

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);