別のメソッドで値を入れた変数を、ボタンのコールバック関数内で
使う方法を考えました。
こちらがクラス。
public class Profile { private static double replaceLati; private static double replaceLong; public Profile() { } public double getLati() { return replaceLati; } public double getLong() { return replaceLong; } public double setLati(double d) { replaceLati = d; return replaceLati; } public double setLong(double d) { replaceLong = d; return replaceLong; } }
2,3行目のdouble replaceLatiとdouble replaceLongですが、
先頭にprivate staticという修飾子がついています。
この中のstatic修飾子をつけることで、インスタンス化する前に
変数を呼び出せるようになります。
例えば次のように。。。
Profile pro = new Profile(); pro.setLati(d);
上記のようにあるメソッド内で、インスタンス化したクラスでsetLatu(d);を
呼び出して値をセットしたとします。そして別のメソッド、つまりボタンを押すことで
発火するコールバック関数で再度getLati();を使いたいとなった時
は以下のように使うことで値を取り出せるようになります。
@OnClick(R.id.confirm)
public void submit() {
Profile pro = new Profile();
//do something
double d = pro.getLati();
}
]
通常private staticが付いていない時は、インスタンス時にクラスが初期化されるので
setLati(d);した時の値が空もしくはnullになります。
この状態で変数を変更するメソッドが呼ばれた場合、private staticで定義した変数はインスタンス化される前に
呼ばれるので、値を保ったままその値を使うことができるという訳です。
ただクラス内ではグローバル変数と同じ扱いなので、変数を多く使っていないアクティビティなら
わざわざこの技法を使う必要がないかなと感じました。