限制按钮点击次数

Limit number of button clicks

我制作了一个应用程序,用户按下一个按钮可以转到另一个 activity,但我只希望用户总共按下该按钮 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" /> 

您必须将增加的号码分配给您的成员字段。还有评价不对

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:

<Button
  ...
  android:onClick = "FoodClicks"
 /> 

或在您的 Activity in 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

自从您使用此按钮打开另一个 activity 后,这将导致您的 activity 在您返回时重新加载...因此计数器将被重新初始化 解决问题的一种方法是将该计数器存储在像您的应用程序这样的保存区域 class

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来存储点击次数,所以如果你的按钮执行任何操作,点击次数都可以被存储。