Che*_*ppa 3 java blackberry java-me
我不理解final变量的概念.在一个for循环中,我有动态变量i,这对我来说引用数组至关重要.一旦我使用i它,它会引发一个错误,说它应该是final.
到底是final什么?你能帮忙摆脱那个错误吗?
我的代码在这里:
for( int i = 0; i <4; i++)
{
Bitmap celeb1=Bitmap.getBitmapResource(fimagearray[i]);
Bitmap celeb1_focus=Bitmap.getBitmapResource(fimagearray[i]);
ImageButton celebbutton = new ImageButton(celeb1, celeb1_focus);
celebbutton.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field field, int context)
{
UiApplication.getUiApplication().pushScreen(new FetchTweets(fusernamearray[i]));
}
});
femaleSec.add(celebbutton);
}
Run Code Online (Sandbox Code Playgroud)
NPE*_*NPE 10
匿名内部类只能访问final外部作用域中的变量.由于i不是最终的,因此无法直接访问.i由于需要更改,因此无法进行最终决定,并且无法更改最终变量.
作为一个简单的解决方法,i在每次循环迭代期间将值复制到最终变量中:
for( int i = 0; i < 4; i++)
{
final int index = i; // <-- copy i to `index' to use in FieldChangeListener
// ...
celebbutton.setChangeListener(new FieldChangeListener() {
public void fieldChanged(Field field, int context)
{
UiApplication.getUiApplication().pushScreen(
new FetchTweets(fusernamearray[index])); // <-- `index'
}
});
femaleSec.add(celebbutton);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
201 次 |
| 最近记录: |