2010-11-06 3 views
3

Я знаю, это может показаться очень простым, но вот моя проблема:Как приращение счетчика внутри OnClick View Event

У меня есть 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 либо, так как он будет только сбросить его значение каждый раз, когда я его нажимаю.

+0

возможно дубликат [Внутри OnClickListener я не могу получить доступ к много вещей - как подойти к] (http://stackoverflow.com/questions/2076037/inside-onclicklistener-i-cannot-access-a- много вещей-как-подход) –

ответ

12

Решено:

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

считают, что этот ответ считается «принятым», щелкнув значок «tick» или «check» рядом с ним –

1

Вы можете объявить 'счетчик' вне OnCreate метода Activity в.

0
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(); 
      } 
Смежные вопросы