按钮应该通过字符串数组单击 5 次,停止 5 秒然后继续(单击 5 次)一致,错误

Button supposed to click 5 times through an string array, stop 5 secs and then continue(clicking 5 times) CONSISTENTLY, ERROR

我的问题是我无法让我的按钮通过显示在 TextView 中的字符串数组持续点击 5 次, 每当 maxclicks(5) 和 currentnumber 达到 5 时它就会停止工作,我一直在尝试创建 if 条件来解决它,不知何故我必须操纵我的 currentnumber 不是 5 因为 IF maxclicks == currentnumber 我的按钮已启用。

在下面的代码中,它会在第一次点击 5 次后停止。

代码如下:

public class MainActivity extends AppCompatActivity {


int currentnumber = 0;
int mod = 5;
TextView display = findViewById(R.id.tx);
Handler handler = new Handler();
int delay = 5000; 
int maxclicks = list.length;



@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);



    Resources res = getResources();
    final String[] list = res.getStringArray(R.array.xyz);
    final Button next_button = findViewById(R.id.next_btn);

    {
        ((TextView) findViewById(R.id.tx)).setText(list[currentnumber]);

next_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(currentnumber == maxclicks){
                    currentnumber = 0;
                }
                if (currentnumber % mod == 0) {
                    next_button.setEnabled(false);
                    handler.postDelayed(new Runnable() {
                        @Override
                        public void run() {
                            //the button will unlock after the delay specified
                            next_button.setEnabled(true);
                            currentnumber++;

                        }
                    }, delay);
                }
                else {
                    display.setText(list[currentnumber]);
                    currentnumber++;
                }
            }
        });


    }
}
}

欢迎来到 SO :) 我尽力理解你的解释,所以这是我对你的问题的解决方案,不要忘记你可以使你的 vars 全局以避免 final 和一个元素数组的事情:

    public class MainActivity extends AppCompatActivity {
        private int currentnumber,mod,delay,Curclicks;
    private TextView display;
    private Handler handler;
    private Button next_button;
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_setting);

        //Binding
        display = findViewById(R.id.tx);
        next_button = findViewById(R.id.next_button);
        //getResources
        Resources res = getResources();

        //getting the data ready
        String[] list = {"1","2","3","4","5","6","7"};
        //assign vars
        handler = new Handler();
        currentnumber = 0;
        Curclicks=0;
        mod = 5;
        delay = 5000;
        //initial view
        next_button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {

            if(currentnumber == list.length){
                currentnumber = 0;
            }
            if (Curclicks == mod-1) {
                next_button.setEnabled(false);
                display.setText(list[currentnumber]);
                currentnumber++;


                handler.postDelayed(new Runnable() {
                    @Override
                    public void run() {
                        //the button will unlock after the delay specified
                        next_button.setEnabled(true);
                        Curclicks = 0;
                    }
                }, delay);
            }
            else {
                display.setText(list[currentnumber]);
                currentnumber++;

            }
            Curclicks++;

        }

    });
}
    }