У меня есть операция, в которой значение переменной изменяется во время следующего процесса. Следующий код показывает эту операцию.
private long checkOffCode(String pChode) {
final long[] percent = {0};
APIGettingPosts apiGettingPosts = new APIGettingPosts(MainActivity.this, "get_off_code.php");
apiGettingPosts.getOffCode(new APIGettingPosts.OnOffCodeReceived() {
@Override
public void onReceived(List<Posts> posts) {
if (posts == null || posts.isEmpty()) {
// There is no value on sever...
} else {
for (int i = 0; i < posts.size(); ++i) {
// If the code in serve is equal with pCode],
// change the price value....
if (pChode.equals(posts.get(i).getCode())) {
percent[0] = Long.valueOf(posts.get(i).getPercent());
}
}
}
}
});
return percent[0];
}
Функция checkOffCode
получает код и возвращает переменную с именем percent
, если ее значение равно значению, хранящемуся на сервере.
В случае setOnClickListener
кнопки btnPurchase
вызывается это значение, и по его значению вычисляется переменная price
.
Код для этого раздела выглядит следующим образом:
btnPurchase.setOnClickListener(new View.OnClickListener(){
long percent = 0;
@Override
public void onClick (View view){
percent = checkOffCode("MYCODE");
if (percent != 0) {
// update price value...
price = price - price * percent / 100;
Log.e("Success >>", String.valueOf(price));
} else {
Log.e("Failure >>", String.valueOf(price));
}
}
});
Проблема в том, что когда я нажимаю кнопку btnPurchase
в первый раз, предыдущее значение percent
[процент = 0] вычисляется в операции, но когда я нажимаю на кнопку во второй раз переменная price
вычисляется с новым значением percent
.
Вывод Log cat
отображается как в первом, так и во втором щелчках соответственно, следующим образом:
08-28 00: 45: 04.589 28467-28467 /? E / Успех >>: 125000
08-28 00: 45: 11,425 28467-28467 /? E / Успех >>: 16000
Вопрос: Как я могу вычислить значение price
с новым значением percent
в первый раз?