Android:相同的代码行不能在单独的方法中工作

时间:2017-09-10 18:39:09

标签: java android exception-handling reference

如果我碰巧在与被调用变量的构造相同的方法中使用了几行代码,那么它可以工作,但是如果我要创建另一个只执行相同操作的方法,则复制粘贴< / 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();

这是使用过的变量的声明。 (那是在课程的开头)

1 个答案:

答案 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