如果我碰巧在与被调用变量的构造相同的方法中使用了几行代码,那么它可以工作,但是如果我要创建另一个只执行相同操作的方法,则复制粘贴< / strong>然后只调用其中的其他方法,它就行不通了。
private void initElements(){
TextView ageValue[] =
{
(TextView)this.findViewById(R.id.age1Value),
(TextView)this.findViewById(R.id.age2Value),
(TextView)this.findViewById(R.id.age3Value)
};
TextView ageText[] =
{
(TextView)this.findViewById(R.id.age1Text),
(TextView)this.findViewById(R.id.age2Text),
(TextView)this.findViewById(R.id.age3Text)
};
for(int i = 0; i<=2;i++){
intValues[i] = a.getHours((i));
stringValues[i] = String.valueOf(intValues[i]);
ageValue[i].setText(stringValues[i]);
}
//updateValues();
}
private void updateValues(){
for(int i = 0; i<=2;i++){
intValues[i] = a.getHours((i));
stringValues[i] = String.valueOf(intValues[i]);
ageValue[i].setText(stringValues[i]);
}
}
如果我取消注释updateValues()函数,程序将无法运行,即使之前在函数中执行相同的代码。此外,调试将在此声明后引出:
ageValue[i].setText(stringValues[i]);
到此error
我尝试过重建和清理程序并重新安装。我在虚拟设备和真正的智能手机上试过了。同样的错误一遍又一遍。 (此外,当我将鼠标悬停在图片中的错误时,它有时会说“源代码与字节码不匹配”,但有时它也没有。“还尝试了”this。“关键字,但没有成功。< / p>
我感到困惑的是如何发生这种情况。也许该方法没有获得某种正确的内存引用,因为它不是直接在声明旁边,但我的意思是“错误语句”之前的两个语句完全正常,尽管它们具有相同的性质。如果你想告诉我为什么这不起作用会很棒,谢谢!
TextView ageValue[] = new TextView[3];
TextView ageText[] = new TextView[3];
int intValues[] = new int[3];
String stringValues[] = new String[3];
CalculateDates a = new CalculateDates();
这是使用过的变量的声明。 (那是在课程的开头)
答案 0 :(得分:0)
您需要为该班级使用全球ageValue []和ageText []。
private void initElements(){
ageValue[0] =(TextView)this.findViewById(R.id.age1Value);
ageValue[1] =(TextView)this.findViewById(R.id.age2Value);
ageValue[2] =(TextView)this.findViewById(R.id.age3Value);
ageText[0] = (TextView)this.findViewById(R.id.age1Text);
ageText[1] = (TextView)this.findViewById(R.id.age2Text);
ageText[2] = (TextView)this.findViewById(R.id.age3Text);
for(int i = 0; i<=2;i++){
intValues[i] = a.getHours((i));
stringValues[i] = String.valueOf(intValues[i]);
ageValue[i].setText(stringValues[i]);
}
也不要在方法中声明TextViews。
您在initElements()方法中创建了这些textView的不同实例,并且全局TextView仍为null