Я пытаюсь использовать статические переменные в открытом классе для передачи их между действиями.
У меня редкая проблема с этим. Я даю значения статическим переменным в деятельности. Это действие вызывает GLSurfaceView и прослушивает изменения ориентации экрана.
Если я даю значения статическим переменным в GLSurfaceView, то все работает нормально, значения сохраняются, и я могу получить их при повторном вызове метода onCreate после изменения ориентации экрана.
Проблема в том, что я сохраняю значения в статических переменных вне класса GLSurfaceView, внутри методов onTouchListener действия. Эти значения не хранятся должным образом в статических переменных, потому что, когда я пытаюсь получить к ним доступ в GLSurfaceView, эти значения не являются такими, какими они должны были быть.
Это мой класс статических переменных:
public class MagazineStatus {
//clase utilizada para almacenar variables estáticas.
static int currentPage=1; //página actual
//Valores originales cuando pasamos de un modo a otro, por ejemplo, de portrait a landscape.
static float oScale=0.0f;
static float oX=0.0f;
static float oY=0.0f;
static float oZrot=0;
static boolean modeChanged=false; //indica si hemos cambiado de modo
(landscape/portrait)
}
Здесь я храню значения в своем классе активности (я сделал отладку и, по-видимому, они правильно хранятся):
for (int i=0;i<thumbnailLinearLayouts.size();i++){
final int auxIndex=i;
thumbnailLinearLayouts.get(i).setOnTouchListener(new OnTouchListener(){
@Override
public boolean onTouch(View v, MotionEvent event) {
MagazineStatus.currentPage=auxIndex;
System.out.println("MagazineStatus.currentPage: "+MagazineStatus.currentPage);
return true;
}
});
}
И здесь я пытаюсь получить эти значения в классе GLSurfaceView, и значения не верны. Он возвращает исходное начальное значение 1 вместо значения, сохраненного ранее.
currentPage=MagazineStatus.currentPage; //cargo datos guardados antes del cambio de orientación
Что я делаю не так?