图像按钮验证不起作用

Imagebutton Validation not working

我正在尝试在我的 ImageButtononClick() 中进行验证。它就像 Boggle 游戏中的瓷砖。如果我单击图像 1,那么最近的 ImageButtons 必须是唯一可单击的 ImageButton,其余按钮将被设置为不可单击。我怎样才能实现它?这是我在 onCreate().

声明的代码
public void tileClick() {
        if (image1.isPressed()) {
            image1.setClickable(false);
            image1.setImageResource(R.drawable.changes);

          //clickable when image1 is pressed/clicked
            image2.setClickable(true);
            image5.setClickable(true);
            image6.setClickable(true);

          //unclickable
            image3.setClickable(false);
            image4.setClickable(false);
            image7.setClickable(false);
            image8.setClickable(false);
            image9.setClickable(false);
            image10.setClickable(false);
            image11.setClickable(false);
            image12.setClickable(false);
            image13.setClickable(false);
            image14.setClickable(false);
            image15.setClickable(false);
            image16.setClickable(false);

        }
    }

自定义点击监听器 //获取ImageButton字母

    View.OnClickListener myCommoClickListner = new View.OnClickListener(){

        @Override
        public void onClick(View arg0) {

            Log.i(TAG, "arg0.getId()=" + arg0.getId());

                if (arg0.getId()==R.drawable.a){
                    Log.i(TAG,"arg0.getId()="+arg0.getId());
                    generatedString=generatedString+("a");
                    text.setText(generatedString);

   //change ImageButton's background when clicked
                    ((ImageButton) arg0).setImageResource(R.drawable.changea);

   //Set ImageButton clickable = false when already clicked
                    arg0.setClickable(false);

            }
        }
    };

    //all 16 ImageButtons declared like this :

    image1.setOnClickListener(myCommoClickListner);

更改您的方法以接受 ImageButton

public void tileClick(ImageButton clickedBtn) {
    // validation logic
}

将点击的 ImageButton 传递给 onClick()

中的函数
View.OnClickListener myCommoClickListner = new View.OnClickListener(){
 @Override
 public void onClick(View arg0) {
     ...
     tileClick((ImageButton) arg0) // should change arg0 to something meaningful (v, view, etc...)           
     ...
        }
    }
};

然后根据传入的按钮设置按钮可点击true/false

您可以将 ImageButtons 放在 Array 中并遍历它们并根据按下的按钮设置可点击。