簡體   English   中英

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
    }

當前,每次您單擊按鈕時,都將button標記設置為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();

因此狀態將始終為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);

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM