【问题标题】:How to increment a Counter inside an OnClick View Event如何在 OnClick 视图事件中增加计数器
【发布时间】:2016-06-30 04:47:43
【问题描述】:

我知道这听起来很基本,但这是我的问题:

我有一个 onclickevent 监听器,它应该在被点击时无限期地增加计数器:

final int counter = 0;
myimageView2.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        counter ++;
    }
});

问题是我似乎无法从 onclick 事件内部调用计数器,除非它设置为 final。但是,由于它是最终的,我也无法再更改它的值。

我尝试将计数器放在 onclick 事件中,即:

myimageView2.setOnClickListener(new OnClickListener() {
    public void onClick(View v) {
        int counter = 0;
        counter ++;
    }
});

但是,单击它也会将计数器重置为零。

我该如何解决这个问题?我想每次点击它时不断增加计数器, 但是我不能在 onclick 之外定义计数器,除非它是最终的,这意味着我不能再增加它。而且我也无法在 onclick 中定义计数器,因为它只会在我每次单击它时重置其值。

【问题讨论】:

标签: android sdk


【解决方案1】:

已解决:

myimageView2.setOnClickListener(new OnClickListener() {
    int counter = 0;
    public void onClick(View v) {
        counter ++;
    }
});

【讨论】:

  • 考虑通过单击旁边的“勾选”或“检查”图标将此答案标记为“已接受”
【解决方案2】:

您可以在 Activity 的 oncreate 方法之外声明“计数器”。

【讨论】:

    【解决方案3】:
        t.setOnClickListener(new View.OnClickListener() {
            int Counter = 0;
            @Override
            public void onClick(View v) {
                Toast.makeText(getApplicationContext(), R.string.hey, Toast.LENGTH_SHORT).show();
                t.setBackgroundColor(getResources().getColor(R.color.colorPrimary));
                c.setBackgroundColor(getResources().getColor(R.color.colorAccent));
                p.setVisibility(View.VISIBLE);
                if (Counter >= 0) {
                    Counter++;
                    e.setText("you clicked Click me "+Counter +"number of times");
                    e.setTextSize(15);
                    e.setTextColor(getResources().getColor(R.color.colorPrimary));
                    e.setSingleLine();
                }
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2015-02-20
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-08
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多