我的应用程序显示点击按钮的次数,不会从0

时间:2015-07-19 20:49:38

标签: java android for-loop event-listener

我正在学习制作Android应用,并且希望创建一个简单的应用来计算点击按钮的次数,但是我运行应用时遇到了问题。

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


    //Connects the button by ID and reference to the design button
    Button andrewsButton = (Button) findViewById(R.id.andrewsButton);

    //When the button is clicked it will display the amount of times the button is clicked
    andrewsButton.setOnClickListener(
            new Button.OnClickListener() {
                public void onClick(View v) {
                    TextView andrewsText = (TextView) findViewById(R.id.andrewsText);
                    for(int i = 0;i < 20;++i) {
                        String s = Integer.toString(i);

                        andrewsText.setText(s);
                    }
                }
            }
    );

问题是我运行它并点击按钮一旦它自动转到19而不是从0开始。

1 个答案:

答案 0 :(得分:3)

每次单击按钮时都会调用onClick方法一次。你有一个for循环计数到19,所以每次点击按钮你都会用数字1-19再次快速设置文本,直到达到19。

如果你想保留一个单独的计数器,你可以创建一个全局变量,然后在onClick方法中将它递增1。这应该提供所需的行为:

private int count = 0;

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


    //Connects the button by ID and reference to the design button
    Button andrewsButton = (Button) findViewById(R.id.andrewsButton);

    //When the button is clicked it will display the amount of times the button is clicked
    andrewsButton.setOnClickListener(
            new Button.OnClickListener() {
                public void onClick(View v) {
                    TextView andrewsText = (TextView) findViewById(R.id.andrewsText);
                    count++;
                    andrewsText.setText(String.valueOf(count));
                }
            }
    );