所以我还在学习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);
};
就像我说的那样,我知道这是最低效,最慢的做事方式,但我仍然在学习,喜欢用最简单,最愚蠢的方式做事,这样我才能获得核心概念。我也在观看教程,但我也喜欢一个侧面项目。谢谢你的帮助!
答案 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;
}
}
}