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

时间:2015-05-15 20:26:09

标签: java android button

我一直试图在每次点击时更改按钮的文字,并且在第一次点击按钮时取得了成功。一直在玩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
    }

4 个答案:

答案 0 :(得分:0)

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

button.setTag(0);

改为:

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

它应该有用。

答案 1 :(得分: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中放置所有小部件,这样您每个生命周期只需执行一次。

答案 2 :(得分:0)

以下是您的问题:

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

所以状态始终为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;
         }
    }

});

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

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

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

view.setTag(STATE_PAUSED);

view.setTag(STATE_UNPAUSED);

答案 3 :(得分:0)

button.setTag(0);         button.setText("&#34);

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