单击时如何只选择一个按钮 -QUIZ ANDROID

How to make only one Button selected when clicked -QUIZ ANDROID

我正在尝试实现一个测验,用户可以从四个按钮中选择一个。当他们点击按钮时,它会被选中,但我想做的是让之前选择的任何其他按钮重置为正常。这是我的 class 和代码,但它不会禁用其他按钮:

public class QuizOne extends Fragment{
        Button one;
        Button two;
        Button three;
        Button four;
        boolean selected = false;

        public QuizOne(){

        }

        @Nullable
        @Override
        public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
            View rootView = inflater.inflate(R.layout.quiz, container, false);
            one = (Button) rootView.findViewById(R.id.ones);
            two = (Button) rootView.findViewById(R.id.twos);
            three = (Button) rootView.findViewById(R.id.threes);
            four = (Button) rootView.findViewById(R.id.fours);
            selectedButton();
            return rootView;
        }

        public void selectedButton(){
            one.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(selected){
                        one.setBackgroundColor(Color.YELLOW);
                    }
                    else {
                        one.setBackgroundColor(Color.GRAY);
                        selected = true;
                    }
                }
            });
            two.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(selected){
                        two.setBackgroundColor(Color.YELLOW);
                    }
                    else {
                        two.setBackgroundColor(Color.GRAY);
                        selected = true;
                    }
                }
            });
            three.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(selected){
                        three.setBackgroundColor(Color.YELLOW);
                    }
                    else {
                        three.setBackgroundColor(Color.GRAY);
                        selected = true;
                    }
                }
            });
            four.setOnClickListener(new View.OnClickListener() {
                @Override
                public void onClick(View v) {
                    if(selected){
                        four.setBackgroundColor(Color.YELLOW);
                    }
                    else {
                        four.setBackgroundColor(Color.GRAY);
                        selected = true;
                    }
                }
            });
        }

}

所以这是我正在努力的 selectedButton() 方法。因为如果用户点击一个按钮然后改变主意并选择另一个按钮,那么应该禁用前一个按钮。同样在单击按钮后我想转到下一个选项卡

您可能需要重新考虑您的整个设计。有更少的代码更简单的方法。尝试这样的事情:

public class QuizOne extends Fragment implements View.OnClickListener {
    ....
  @Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
        View rootView = inflater.inflate(R.layout.quiz, container, false);
        one = (Button) rootView.findViewById(R.id.ones);
        one.setOnClickListener(this);

    // and so on ...


   @Override
   public void onClick(View v) {

       setButtonsGray();
       v.setBackgroundColor(COLOR.Yellow);

   }

   private void setButtonsGray(){
       one.setBackgroundColor(COLOR.Gray);
       two.setBackgroundColor(COLOR.Gray);
       // and so on ...
   }

如果我清楚地理解你的问题,如果你想遵循你的第一个写入逻辑,一种方法是当你点击你的 button 为它设置黄色和灰色为 evryone exept clicket button

public void selectedButton() {
        one.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    one.setBackgroundColor(Color.YELLOW);
                    two.setBackgroundColor(Color.GRAY);
                    three.setBackgroundColor(Color.GRAY);
                    four.setBackgroundColor(Color.GRAY);


            }
        });
        two.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    two.setBackgroundColor(Color.YELLOW);
                    one.setBackgroundColor(Color.GRAY);
                    three.setBackgroundColor(Color.GRAY);
                    four.setBackgroundColor(Color.GRAY);

            }
        });
        three.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    three.setBackgroundColor(Color.YELLOW);
                    one.setBackgroundColor(Color.GRAY);
                    two.setBackgroundColor(Color.GRAY);
                    four.setBackgroundColor(Color.GRAY);

                }

        });
        four.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                    four.setBackgroundColor(Color.YELLOW);
                    one.setBackgroundColor(Color.GRAY);
                    two.setBackgroundColor(Color.GRAY);
                    three.setBackgroundColor(Color.GRAY);

            }
        });
    }

但确实有很多方法可以实现这一点..