我不明白为什么Android Studio告诉我分配给isOne的值永远不会被使用。我在淡入淡出方法的if语句中将值设置为false和true。但是,当我将变量isOne声明为成员变量而不是局部变量时,错误就消失了,它似乎完美无缺。我不确定为什么修复错误......有什么想法吗?
private ImageView img1;
private ImageView img2;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
img1 = (ImageView) findViewById(R.id.porsche1);
img2 = (ImageView) findViewById(R.id.porsche2);
img1.setOnClickListener(this);
img2.setOnClickListener(this);
}
@Override
public void onClick(View v) {
fade();
}
public void fade(){
boolean isOne = true;
if (isOne) {
img1.animate().alpha(0).setDuration(2000);
img2.animate().alpha(1).setDuration(2000);
isOne = false;
} else {
img1.animate().alpha(1).setDuration(2000);
img2.animate().alpha(0).setDuration(2000);
isOne = true;
}
}
}
答案 0 :(得分:1)
使用这种方式,我希望它会对你有所帮助
boolean isOne = false; // Use Globally
public void fade(){
if (isOne) {
img1.animate().alpha(0).setDuration(2000);
img2.animate().alpha(1).setDuration(2000);
} else {
img1.animate().alpha(1).setDuration(2000);
img2.animate().alpha(0).setDuration(2000);
}
}
答案 1 :(得分:0)
在“if”和“else”块的末尾,为isOne分配值。设置后,您永远不会使用该值,因此这些分配未使用。每个新的调用重新声明都是一个,因此最后一个赋值不会成为下一个调用的初始值。
字段更难分析,因为一次调用的最后一次分配将用作下一次调用的初始值(假设在同一个实例上调用了两个方法)。