我希望我的按钮被单击一次,并且我想禁用双击

时间:2018-10-09 18:08:49

标签: android

package com.example.shery.tictactoe;

import android.annotation.SuppressLint;
import android.graphics.Color;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;

public class MainActivity extends AppCompatActivity {
    Button btn1,btn2,btn3,btn4,btn5,btn6,btn7,btn8,btn9;
    TextView tv1,tv2;
    String field1 = tv1.getText().toString();
    @SuppressLint("CutPasteId")
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        btn1 = findViewById(R.id.btn1);
        btn2 = findViewById(R.id.btn2);
        btn3 = findViewById(R.id.btn3);
        btn4 = findViewById(R.id.btn4);
        btn5 = findViewById(R.id.btn5);
        btn6 = findViewById(R.id.btn6);
        btn7 = findViewById(R.id.btn7);
        btn8 = findViewById(R.id.btn8);
        btn9 = findViewById(R.id.btn8);
        tv1 = (TextView)findViewById(R.id.tv1);

        if (field1.equals("Turn X")){
            tv1.setTextColor(Color.GREEN);
        }else if (field1.equals("Turn O")){
            tv1.setTextColor(Color.GREEN);
        }

        btn1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                if(field1.equals("Turn X")){
                    btn1.setText("X");
                    tv1.setText("Turn O");
                } else {
                    btn1.setText("O");
                    tv1.setText("Turn X");
                }
            }
        });

我希望我的按钮被单击一次,并且我想禁用双击,所以在我的代码中将执行什么操作以及如何执行此操作,并且想要停止双击这是我在下面可以检查的代码。我希望我的按钮被单击一次,并且我想禁用双击:

2 个答案:

答案 0 :(得分:1)

只需在您的onClickListener中调用view.setEnabled(false);即可在第一次单击后禁用该视图。

答案 1 :(得分:0)

据我了解,您想禁用双击该按钮。这是不可能的,因为Android会将点击排队,但是我一直使用一个技巧:存储上次点击:

private long btn1ClickTime= 0; //local variable declaration


findViewById(R.id.btn1).setOnClickListener(new OnClickListener() {
    @Override
    public void onClick(View v) {
        if (SystemClock.elapsedRealtime() - btn1ClickTime< 1000){
            return;//do nothing
        }
        btn1ClickTime= SystemClock.elapsedRealtime();
        //write your code here
    }
}