【问题标题】:How to set a boolean true again in Android?如何在 Android 中再次设置布尔值 true?
【发布时间】:2015-11-09 17:34:03
【问题描述】:

boolean isChecked 是第一次声明 true,而不是我在 OnClickListener 中设置的 false。我需要的是在下一个OnClickListener 中再次将boolean isChecked 设置为true。我知道这不在同一个范围内,但我该怎么做? 这是我的代码:

answer[j].setOnClickListener(new View.OnClickListener() {
    private boolean isChecked = true;

    @Override
    public void onClick(View v) {
        RadioButton checkedRadioButton = ((RadioButton) v);
        if (isChecked) {
        if (checkedRadioButton.isChecked()) {
            score++;
            isChecked = false;
        }
        }
    }
});

resetButton.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        isChecked = true;
        score = 0;
    }
});

谢谢!

【问题讨论】:

    标签: java android boolean onclicklistener


    【解决方案1】:

    您只需在 onclick 侦听器范围之外声明您的布尔值。然后它会变得更容易访问,你可以用它做任何你需要的事情。 在您的 onCreate 之前声明它,以便它在此类中具有全局访问权限。

    示例

    public class MainActivity extends AppCompatActivity {
    Button btn, btn2;
    boolean isValid;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        btn = (Button) findViewById(R.id.button);
        btn2 = (Button) findViewById(R.id.button2);
        isValid = true;
    
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                isValid = true;
            }
        });
    
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                isValid = false;
            }
        });
    
      }
    }
    

    编辑 V2

    我查看了您再次发布的代码,据我所知,您的逻辑是说 isValid 是否为真(您有 if(isValid))然后进入您的逻辑。那么开始你实际上是在声明这个值是假的。所以在你的代码中说 isValid = true;发生的事情是您的逻辑是布尔值不正确,因此不要执行代码。

    编辑 V3

    好的,我再次查看了您的所有代码,我可以看到发生了什么。由于该变量现在是全局变量,因此一旦我们将其声明为 false,它就不会再次执行,因为它再也没有机会被重新分配为 true。老实说,我看不到这个变量的目的。除了在那里之外,它没有做任何事情哈哈。但是,如果你想拥有变量,你应该删除行 isChecked = false;正如我所说,老实说,我在您的代码中没有看到它的用途。

    【讨论】:

    • 请参阅编辑。我的错误。您需要在 onCreate 之前全局声明它
    • 您可以使用可变布尔包装器,而不是 boolean。像这样的东西:java2s.com/Code/Java/Data-Type/MutableBoolean.htm
    • @mithridas 当然,但这是最简单和最直接的方法,不。看来他只有一个需要更改的布尔值。为什么不只是全局声明并从那里操作呢?无需变得比需要的更复杂。
    • 没有看到编辑,这更直接,+1
    • @JordanSeanor:是的,我需要一个布尔值来改变,但如果我在你的 onCreate 之前全局声明它,它会使variable score 停止增加。它保持在 1。当它在 OnClickListener 内时工作正常。我能做什么?
    【解决方案2】:

    让它简单------

    btn = (Button) findViewById(R.id.button);
        btn2 = (Button) findViewById(R.id.button2);
        isValid = true;
    
        btn.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                isValid = true;
            }
        });
    
        btn2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                isValid = false;
            }
    

    【讨论】:

      猜你喜欢
      • 2014-07-03
      • 2015-08-27
      • 1970-01-01
      • 2019-09-29
      • 1970-01-01
      • 1970-01-01
      • 2017-05-24
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多