Imagebutton验证不起作用

时间:2015-03-20 16:11:45

标签: android validation imagebutton

我正在尝试在我的ImageButton onClick()中添加验证。它就像是博格格游戏中的瓷砖。如果我点击图片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);

        }
    }

CustomClickListener //获取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);

1 个答案:

答案 0 :(得分:1)

将您的方法更改为接受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中并对其进行迭代,然后根据按下的按钮设置可点击的内容。