我制作了一个应用程序,用户按下按钮进入另一个活动,但我只希望用户共按下此按钮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
android:id="@+id/button"
style="?android:attr/buttonStyleSmall"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_below="@+id/textView1"
android:layout_centerHorizontal="true"
android:layout_marginTop="38dp"
android:text="@string/addmeal" />
答案 0 :(得分:1)
您必须将增加的号码分配给您的会员字段。评估也不正确。
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);
}
}
答案 1 :(得分:1)
您最近调用您的方法,将其添加到您的xml:
<Button
...
android:onClick = "FoodClicks"
/>
或在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
答案 2 :(得分:1)
因为你使用这个按钮打开另一个活动,这样当你回到它时会导致你的活动重新加载...所以计数器将被重新初始化 解决问题的一种方法是将该计数器存储在像Application类
这样的保存区域答案 3 :(得分:1)
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
存储点击次数,因此,如果您的按钮执行任何操作,则可以存储点击次数。