永远不会使用分配的布尔值 - Java / Android Studio

时间:2018-04-26 00:28:07

标签: java android-studio

我不明白为什么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;
    }

}

}

2 个答案:

答案 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分配值。设置后,您永远不会使用该值,因此这些分配未使用。每个新的调用重新声明都是一个,因此最后一个赋值不会成为下一个调用的初始值。

字段更难分析,因为一次调用的最后一次分配将用作下一次调用的初始值(假设在同一个实例上调用了两个方法)。