Android Studio 限制按钮点击次数

t40tm48m  于 2023-01-14  发布在  Android
关注(0)|答案(4)|浏览(266)

我做了一个应用程序,用户按下一个按钮可以进入另一个活动,但我只希望用户总共按下这个按钮5次。我尝试了下面的代码,但它不能阻止用户按下按钮超过5次,所以我猜应用程序需要以某种方式记住点击?

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

活动主体.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" />
pwuypxnk

pwuypxnk1#

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

rdrgkggo

rdrgkggo2#

你必须把增加的数字分配给你的成员字段。而且评估也不正确。

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);
        }
    }
l7mqbcuq

l7mqbcuq3#

由于您使用此按钮打开了另一个活动,因此将导致您的活动在您返回时重新加载...因此计数器将重新初始化,解决此问题的一种方法是将该计数器存储在保存区域(如应用程序类)中

ca1c2owp

ca1c2owp4#

如果您要调用方法,请将以下代码添加到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

并记住初始化这个。计数器= 0;在您的Activity

相关问题