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);
};
就像我说的,我知道这是做事最低效和最慢的方式,但我仍然在学习,喜欢以最简单,最愚蠢的方式做事,以便我能够获得核心概念。我也在看教程,但我也喜欢一个小项目进入。谢谢你的帮助!
我跳这个代码皮斯帮助你
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;
}
}
}
非常感谢答案和一些示例代码,这非常有帮助。我从来没有想过在按钮上使用另一个开关,但我仍然有一个问题。我在开关代码中得到“无法解析符号”错误和int变量。当我在onClick中定义我的int变量时,这会消失,但当我移动按钮时也不会。我一定在某处丢失了某些东西:/ – wgibbsw
即时通讯很高兴它可以帮助您 –
我认为您需要将分数int用作全局变量,因为如果它在交换机中,分数int超出范围,请尝试此操作并让我知道 –
是有可能的,你检查v.getId()对每个单独的按钮的ID来了解你点击其中一个 – Blackbelt
非常感谢你的回复,另一个答案已经说了类似的东西,所以它给了我一些东西来看看 - 再次感谢! – wgibbsw