为什么在类中更改布尔值并不会在其外部生效

时间:2018-02-12 17:02:45

标签: image android-studio boolean

我创建了一个类来确保只能选择两个项目。

所有项目的状态均为 True False

因此该方法询问三个项目和三个状态。我尝试只显示两个项目,状态为 True

class EscolheItens {

    private void escolheItem(boolean um, boolean dois, boolean tres, ImageView one, ImageView two, ImageView three) {
        if (um == false && dois == true && tres == true) {
            one.setVisibility(View.INVISIBLE);
        } else if ((um == false && dois == true && tres == false) || (um == false && dois == false && tres == true)) {
            one.setVisibility(View.INVISIBLE);
        } else if (um == false && dois == false && tres == false) {
            one.setVisibility(View.INVISIBLE);
            dois = true; //here I put it true 
            two.setVisibility(View.VISIBLE);
        }
    }
}

现在我使用这个类的方法

 livrofechado.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                livroFechadoStatus = false;
                EscolheItens NovaEscolha = new EscolheItens();
                NovaEscolha.escolheItem(livroFechadoStatus, barrasOuroStatus, antidotoAranhaStatus, livrofechado, barrasOuro, antidotoAranha);
            }
        });

        barrasOuro.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                barrasOuroStatus = false;
                EscolheItens NovaEscolha = new EscolheItens();
                NovaEscolha.escolheItem(barrasOuroStatus, antidotoAranhaStatus, livroFechadoStatus, barrasOuro, antidotoAranha, livrofechado);
            }
        });

        antidotoAranha.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                antidotoAranhaStatus = false;
                EscolheItens NovaEscolha = new EscolheItens();
                NovaEscolha.escolheItem(antidotoAranhaStatus, livroFechadoStatus, barrasOuroStatus, antidotoAranha, livrofechado, barrasOuro);
            }
        });

问题是所有布尔值保持为假。 我知道我在所有Onclicks上设置了false,但在内部方法中它们应该更改。

在摆出这里之前我真的尝试过很多东西。但没有任何效果。

1 个答案:

答案 0 :(得分:1)

如果要在布尔值更改后进行更改,请在

中创建一个方法
class EscolheItens {
    private void escolheItem(boolean um, boolean dois, boolean tres, ImageView one, ImageView two, ImageView three) {
        if (um == false && dois == true && tres == true) {
            one.setVisibility(View.INVISIBLE);
        } else if ((um == false && dois == true && tres == false) || (um == false && dois == false && tres == true)) {
            one.setVisibility(View.INVISIBLE);
        } else if (um == false && dois == false && tres == false) {
            one.setVisibility(View.INVISIBLE);
            dois = true; //here I put it true 
            two.setVisibility(View.VISIBLE);
            update(um,dois,tres,one);  // call method
        }
    }

    public void update(boolean um, boolean dois, boolean tres, ImageView one) {
        if (um == false && dois == true && tres == true) {
            one.setVisibility(View.INVISIBLE);
        }
    }
}