2014-06-21 3 views
1

Я работаю над приложением, которое использует много элементов ImageButtons и каждое событие onTouch на этих ImageButtons добавляет значение к переменной Integer. Здесь возникает проблема, скажем, у меня есть это утверждение, что возвращает истину в определенный момент:Freeze a Integer

if (x == y) 

Как я могу сделать integerVariable остаться прежним, даже если пользователь снова касается этих изображений? Например что-то вроде этого:

if (x == y){ integerVariable will not change}; 
+3

Не назначайте к ней ничего больше? – nhaarman

+0

напишите код, в который вы добавите целочисленный variabe –

+0

Я думал об этом ... но для этого потребуется переписать хорошую часть кода. Я предположил, что здесь что-то не хватает из SDK. – BugaIulian

ответ

1

Вы можете контролировать это с помощью пользовательского булева. Это связано с такими причинами (обычным, нестандартным полевым доступом), в котором предлагаются геттеры и сеттеры.

Всегда используйте setter setMyInt(int value) в вашем коде и никогда не получите доступ к полю напрямую, и все будет в порядке. Если вам нужно знать, было ли значение обновлено, посмотрите на возвращаемое логическое значение.

private int myInt; 
private boolean isMyIntLocked = false; 

public boolean setMyInt(int value) { 
    if (isMyIntLocked) { 
     Log.i(TAG, "cannot set myInt, it's been locked"); 
     return false; 
    } else { 
     this.myInt = value; 
     return true; 
    } 
} 

public void lockMyInt(boolean doLock) { 
    this.isMyIntLocked = doLock; 
} 
+0

С некоторыми изменениями в моем коде, но с использованием вашей логики это сработало! Большое спасибо. – BugaIulian

+0

Нет проблем, рад, что вы его отсортировали. – indivisible

2

Вы можете использовать boolean, чтобы проверить, если целое число должно быть увеличено или нет.

Ваши переменные:

boolean increment = true; 
int x = 0, y = 1; 

Когда пользователь нажимает на кнопку X:

if(increment) 
    x++; 

if(x == y) 
    increment = false;