【发布时间】:2012-05-03 19:23:45
【问题描述】:
我正在尝试在单击 ImageView 按钮时进行切换。我有以下代码:
ImageView button01 = (ImageView) findViewById(R.id.button01);
button01.setOnClickListener(new OnClickListener() {
int button01pos = 0;
public void onClick(View v) {
if (button01pos == 0) {
button01.setImageResource(R.drawable.image01);
button01pos = 1;
} else if (button01pos == 1) {
button01.setImageResource(R.drawable.image02);
button01pos = 0;
}
}
});
但由于某种原因 button01 在 Eclipse 中带有红色下划线,它给出了错误:
不能引用内部类中的非最终变量 button01 用不同的方法定义
有谁知道它为什么会这样以及如何解决它?
谢谢
【问题讨论】:
-
在 ImageView button01 前面添加 final...“final ImageView button01”。完成。
-
抱歉,它起作用了...但是现在由于某种原因,当我在按钮上单击两次时它停止切换并且 Eclipse 抛出此错误: ActivityManager: Warning: Activity not started, its current task has been到前面
-
这只是意味着它启动了您已经安装的应用程序并将其带到了前面。并不是真正的错误。有点误导。
-
它会切换一次,然后就再也不会工作了。这样做的原因是因为“int button01pos = 0;”被放置在 onClickListener 内,因此它重置为 0,然后保持为 0。如果我将它移到 onClickListener 之外,那么它需要是最终的,这使得它无法切换。
-
它不应该停留在 0。onClickListener 只被初始化一次,所以它永远不会“重置”为 0。唯一的方法是如果你有一个项目的列表视图,它们在哪里得到滚动时滚动并重新初始化。我自己在我的设备上进行了测试,使用您的代码可以正常工作。
标签: android button imagebutton