Android Studio- 单击按钮多次更改按钮文本

Android Studio- Click button to change the buttons text multiple times

我一直在尝试通过每次点击来更改按钮的文本,并且在第一次点击按钮时就成功了。一直在玩 button.setTag 和 button.getTag 以尝试通过按钮点击的状态进行转换。

正是我想做的...

按钮在开始时默认为“ ” 第一次点击文本转到 "X" 第二次点击文本转到 "O" 第三次单击文本转到“”//尚未尝试启用此功能

到目前为止,这是我的代码..

button.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Button button = (Button) findViewById(R.id.button);
                button.setTag(0);
                button.setText("");
                final int status = (Integer) view.getTag();
                switch (status) {
                    case 0:
                        button.setText("X");
                        view.setTag(1); //pause
                        break;
                    case 1:
                        button.setText("O");
                        view.setTag(0); //pause
                        break;
                }
            }
        });//if you know why android studio makes me add this get bonus points
    }

目前每次单击按钮时都会将按钮标签设置为 0:

button.setTag(0);

更改为:

if(button.getTag() == null){
    button.setTag(0);
}

它应该可以工作。

int count = 2;
button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Button button = (Button) findViewById(R.id.button);
            count++;
            if(count%3==0)button.setText("X");
            else if(count%3==1)button.setText("O");
            else button.setText("");

            }
        }
    });
}

这个怎么样? 此外,我建议您在 onCreate 中投射所有小部件,这样您每个生命周期只需执行一次。

这是您的问题:

button.setTag(0);
button.setText("");
final int status = (Integer) view.getTag();

所以 status 将永远是 0

将您的方法更改为:

button.setTag(0);//do this when you first initialize the button. You can even specify this in Xml with android:tag="0"
button.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View view) {
         Button button = (Button) findViewById(R.id.button);
         button.setText("");
         final int status = (Integer) view.getTag();
         switch (status) {
             case 0:
                 button.setText("X");
                 view.setTag(1); //pause
                 break;
             case 1:
                 button.setText("O");
                 view.setTag(0); //pause
                 break;
         }
    }

});

为了清楚起见,我还建议将标签更改为静态变量。为此,声明这些 class 常量:

public static final int STATE_PAUSED = 0;
public static final int STATE_UNPAUSED = 1;

现在您可以使用以下命令设置标签:

view.setTag(STATE_PAUSED);

view.setTag(STATE_UNPAUSED);

button.setTag(0); button.setText("");

    button.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View view) {
            Button button = (Button) findViewById(R.id.button);

            button.setText("");
            final int status = (Integer) view.getTag();

            switch (status) {
                case 0:
                    button.setText("X");
                    view.setTag(1); //pause
                    break;
                case 1:
                    button.setText("O");
                    view.setTag(2); //pause
                    break;
                case 2:
                    button.setText("");
                    view.setTag(0);
            }
        }
    });
}