检查按钮是否被单击的布尔值由于某种原因不起作用

问题描述 投票:-1回答:1

我一直在这个论坛上搜索有关如何创建一个布尔值,该布尔值在单击时会切换为true。在我的程序中,我有两个按钮:是和否。当我单击它们时,在onClick方法中,布尔值切换为true,但在其余代码中,它保持为false。

代码:

public class MainActivity extends AppCompatActivity { 


    static boolean yesisclicked=false; 
    static boolean noisclicked=false; 




    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
        super.onCreate(savedInstanceState); 
        setContentView(R.layout.activity_main); 


        final Button comment; 

        final Button yes; 
        final Button no; 

comment =findViewById(R.id.comment); 



yes= findViewById(R.id.yes); 
no = findViewById(R.id.no); 



yes.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
yesisclicked=true; 
                noisclicked=false; 


            } 
        }); 
        no.setOnClickListener(new View.OnClickListener() { 
            @Override 
            public void onClick(View v) { 
                noisclicked=true; 
yesisclicked=false; 


            } 
        }); 
comment.setText(""+noisclicked); 

为什么会发生,我该如何解决?

java android-studio
1个回答
0
投票

您正在混合使用相同名称的按钮和静态布尔值,并且在您的onclick处理程序中,您似乎正在使用一些具有局部作用域的变量。]​​>

我想这应该起作用:

public class MainActivity extends AppCompatActivity {

    static boolean yesClicked = false;
    static boolean noClicked  = false;

    @Override 
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        final Button comment = findViewById(R.id.comment);
        final Button yes = findViewById(R.id.yes);
        final Button no  = findViewById(R.id.no);

        yes.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                yesClicked = true;
                noClicked  = false;
                // comment.setText("Yes clicked!" + yesClicked);
            }
        });

        no.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                yesClicked = false;
                noClicked  = true;
                // comment.setText("No clicked! " + noClicked);
            } 
        });
    }
}
© www.soinside.com 2019 - 2024. All rights reserved.