Android:onClickListener方法没有达到结束,因为它首先结束

时间:2016-05-18 04:06:08

标签: java android onclicklistener

我遇到了问题,以下是onClickListener

 check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Integral prev;
            if(selm.getSelectedItem().toString().equals("Trapezi"))
                prev=new Trapezi();
            else
                prev=new SimpsonI();
            txtit.setEnabled(!txtit.isEnabled());
            if(txtit.isEnabled()) {
                calc = calc.getComposite();
            }
            else {
                calc = prev;
            }



        }
    });

未到达方法的末尾,它在执行line后停止:

txtit.setEnabled(!txtit.isEnabled());

这是一个非常奇怪的问题,所以我无法理解它的原因。我是Android的新手,我正在编写一个简单的应用程序,以便在Android环境中变得友好,如果我的问题很愚蠢,这就是原因!感谢

3 个答案:

答案 0 :(得分:1)

只需ifelse语句仅对单行代码有效,因此请在else语句中添加大括号,

     Integral prev;
    if(selm.getSelectedItem().toString().equals("Trapezi"))
        prev=new Trapezi();
    else
     {
        prev=new SimpsonI();
        txtit.setEnabled(!txtit.isEnabled());
     }
    ...

如果您希望在每种情况下都执行setEnabled,那么即使不弄乱代码重新格式化

 else
     {
        prev=new SimpsonI();            
     }
    txtit.setEnabled(!txtit.isEnabled());

答案 1 :(得分:1)

您的txtit.setEnabled(!txtit.isEnabled())内不得包含此onClick

onCreate中,执行:

final boolean getValue = txtit.setEnabled(!txtit.isEnabled());

并用我的onClick更改:

check.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {

            Integral prev;
            if(selm.getSelectedItem().toString().equals("Trapezi"))
                prev=new Trapezi();
            else
                prev=new SimpsonI();

            if(getValue) {
                calc = calc.getComposite();
            }
            else {
                calc = prev;
            }



        }
    });

答案 2 :(得分:0)

找到原因。我在代码的每个部分写的每一行都被忽略,因为Android Studio没有找到更改。它告诉我:没有部署的更改,因此它正在运行以前的版本,其中不包含最新的修改。所以这不是一个java问题,但它是一个与Android Studio相关的问题。谢谢大家