Android Studio - 任何按钮上的Clicklistener?

时间:2015-10-18 14:31:27

标签: android android-studio

所以我还在学习Android Studio,我试图通过制作一个简单的whack-a-mole类型的游戏来混淆我的方式。隐藏了9个按钮的网格,当单击一个按钮时,随机数生成器设置一个int变量,然后通过一个开关设置下一个按钮的可见性。

这一直没事,直到我想为分数int添加+1。每个按钮都有它自己的clicklistener,它有自己的(当然非常低效)副本的开关,如果声明检查它是否已经可见等等,我无法全部获取它们更新相同的变量,因为它需要被声明为final,但是当我这样做时,只是说不能分配变量。

那么可以在任何按钮而不是特定按钮上执行类似clicklistener的操作吗?然后我可以在一个方法中定义和更新变量(如果这是正确的术语)。

这里是第一个按钮看起来像什么的快速副本,直到第一次点击才能看到 -

button0.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            button0.setVisibility(View.INVISIBLE);
            Random rand = new Random();
            int n = rand.nextInt(9);

            switch (n) {
                case 0:
                    if(button0.getVisibility() == View.INVISIBLE){
                        button0.setVisibility(View.VISIBLE);
                    }else{
                        button0.setVisibility(View.INVISIBLE);
                    }
                    break; ... and so on

所以我喜欢的是这样的东西(显然有效) -

    button0 or button1 or button2 or button3 or button4.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {

            int scoreint = 0;
            scoreint++;
            scoreText.setText(""+scoreint);  
        };

就像我说的那样,我知道这是最低效,最慢的做事方式,但我仍然在学习,喜欢用最简单,最愚蠢的方式做事,这样我才能获得核心概念。我也在观看教程,但我也喜欢一个侧面项目。谢谢你的帮助!

1 个答案:

答案 0 :(得分:0)

我跳这段代码可以帮助你

public class MainActivity extends ActionBarActivity  implements View.OnClickListener{



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


    button0 = (Button)findViewById(R.id.button0);
    button0.setOnClickListener(this);

    button1 = (Button)findViewById(R.id.button1);
    button1.setOnClickListener(this);

    //and on ....
    }

 public void onClick(View view)
{
     switch (view.getId())
     {
         case R.id.button0 :
        // do sum thing 
          break;
         case R.id.button1 :
        // do sum thing 
          break;
     }

}

}