アクティビティ間でそれらを渡すためにパブリック クラスで静的変数を使用しようとしています。
私はそれを行う際にまれな問題を抱えています。アクティビティの静的変数に値を与えています。このアクティビティは GLSurfaceView を呼び出し、画面の向きの変更をリッスンします。
GLSurfaceView の静的変数に値を与えると、すべて正常に機能し、値が保存され、画面の向きが変わった後に onCreate メソッドが再度呼び出されたときに値を取得できます。
問題は、アクティビティの onTouchListener メソッド内の GLSurfaceView クラス外の静的変数に値を格納する場合です。これらの値は静的変数に適切に格納されません。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
私は何を間違っていますか?