Android Studio - 任何按钮上的Clicklistener?

问题描述:

因此,我仍然在学习Android Studio,我试图通过制作一个简单的重击式游戏模糊我的方式。一个9个按钮的网格被隐藏,当一个按钮被点击时,一个随机数发生器设置一个int变量,然后通过一个开关设置下一个按钮的可见性。Android Studio - 任何按钮上的Clicklistener?

这一直很好,直到我想给分数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); 
     }; 

就像我说的,我知道这是做事最低效和最慢的方式,但我仍然在学习,喜欢以最简单,最愚蠢的方式做事,以便我能够获得核心概念。我也在看教程,但我也喜欢一个小项目进入。谢谢你的帮助!

+0

是有可能的,你检查v.getId()对每个单独的按钮的ID来了解你点击其中一个 – Blackbelt

+0

非常感谢你的回复,另一个答案已经说了类似的东西,所以它给了我一些东西来看看 - 再次感谢! – wgibbsw

我跳这个代码皮斯帮助你

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; 
    } 

} 

}

+0

非常感谢答案和一些示例代码,这非常有帮助。我从来没有想过在按钮上使用另一个开关,但我仍然有一个问题。我在开关代码中得到“无法解析符号”错误和int变量。当我在onClick中定义我的int变量时,这会消失,但当我移动按钮时也不会。我一定在某处丢失了某些东西:/ – wgibbsw

+0

即时通讯很高兴它可以帮助您 –

+0

我认为您需要将分数int用作全局变量,因为如果它在交换机中,分数int超出范围,请尝试此操作并让我知道 –