2013-05-22 6 views
0

Итак, я хочу рассчитать общее время, которое происходит с момента создания и нажатия кнопки. Я могу сделать это с помощью моего текущего кода, но он использует статические переменные, которые, как я знаю, являются плохой практикой программирования, есть другой способ для меня сделать это.передать переменную методу onClick

мой текущий код:

static long startTime=0; 

    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
     super.onCreate(savedInstanceState); 
     setContentView(R.layout.activity_quick_touch); 
     // Show the Up button in the action bar. 
     setupActionBar(); 
     startTime=System.currentTimeMillis(); 
} 

public void onClick(View view) 
    { 
     long endTime = System.currentTimeMillis(); 
     long time= endTime- startTime; 


    } 
+3

просто удалите ключевое слово «статические». Пока вы на нем, сделайте это частным. – GreyBeardedGeek

+1

Где вы слышали, что статические переменные плохи? Они плохи, если вы не знаете, как правильно их использовать. –

+0

Я не вижу в этом ничего плохого, пока работает – codeMagic

ответ

0

Вам не нужно использовать статический с переменным нестатической переменной член также будет работать. Однако, если вы не хотите, чтобы это загромождало вашу активность вообще, вы могли бы сделать частный внутренний класс для onClickListener и сохранить это время в переменной-члене, переданной через его конструктор.

0

В представленном случае статическая переменная не повлияет на результат вашего кода.

Кроме того, нет реальной причины использовать переменную, когда значение будет постоянным.

Я рекомендую final long startTime; без начального значения. Задайте значение (как вы уже сделали) во время onCreate.

final long startTime; 

@Override 
protected void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setContentView(R.layout.activity_quick_touch); 
    // Show the Up button in the action bar. 
    setupActionBar(); 

    startTime = System.currentTimeMillis(); 
} 

public void onClick(View view) 
{ 
    long endTime = System.currentTimeMillis(); 
    long time= endTime- startTime; 
} 
Смежные вопросы