限制按钮点击次数

我制作了一个应用程序,用户按下按钮进入另一个活动,但我只希望用户共按下此按钮5次。 我尝试了以下代码,但它并没有阻止用户按下按钮超过5次,所以我猜测应用程序需要以某种方式记住点击?

public void FoodClicks(View view){ if(this.counter == 5){ this.counter ++; } else { Button btn = (Button)findViewById(R.id.button); btn.setEnabled(false); } } 

ActivityMain.xml:

 

 button = (Button)findViewById(R.id.button); button.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View view) { int clicks = 0; clicks++; if (clicks >= 5){ button.setEnabled(false); } SharedPreferences prefs = this.getSharedPreferences("myPrefsKey", this.MODE_PRIVATE); SharedPreferences.Editor editor = prefs.edit(); editor.putInt("clicks", clicks); editor.apply(); } }); 

使用sharedPreferences存储点击次数,因此如果您的按钮执行任何操作,则可以存储点击次数。

您必须将增加的编号分配给您的成员字段。 评估也不正确。

 public void FoodClicks(View view){ if(this.counter < 5){ this.counter += 1; } else { Button btn = (Button)findViewById(R.id.button); btn.setEnabled(false); } } 

更重要的是,观点的论点是什么? 实际的按钮? 然后你可以直接使用它。

 public void FoodClicks(View view){ if(this.counter < 5){ this.counter += 1; } else { ((Button) view).setEnabled(false); } } 

因为你使用这个按钮打开另一个活动,这样当你回到它时会导致你的活动重新加载……所以计数器将被重新初始化一种解决问题的方法是将该计数器存储在像你的应用程序这样的保存区域类

你更新的方法调用你的方法,将其添加到你的xml:

  

或在您的Activity中实现onCreate方法监听器,它将调用您的代码:

  Button btn = (Button)findViewById(R.id.button); btn.setOnClickListener(new View.OnClickListener() { @Override public void onClick(View v) { FoodClicks(v); } }); 

此外,你必须改变你的状况

 this.counter == 5 

 this.counter < 4 

并记得初始化this.counter = 0; 在你的Activity