アンドロイドのアクティビティ間で1つ以上の変数を渡したいとします。一つの解決策は、グローバル変数を使用することであり、それがここで説明されていますアクティビティ間の変数の受け渡し
あなたは基本android.app.Applicationクラスを拡張し、そのようにメンバ変数を追加することができます:
私はここに繰り返すこと Android global variable// set
((MyApplication) this.getApplication()).setSomeVariable("foo");
// get
String s = ((MyApplication) this.getApplication()).getSomeVariable();
:
public class MyApplication extends Application {
private String someVariable;
public String getSomeVariable() {
return someVariable;
}
public void setSomeVariable(String someVariable) {
this.someVariable = someVariable;
}
}
は、その後、あなたの活動に、あなたはそうのような変数を取得および設定することができます
これを使用して、ListViewの項目が押されたときに、自分のアクティビティの1つにグローバル変数を設定したいと考えています。だから私はこのコードを持っている:
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
.
.
.
((MyApplication) this.getApplication()).setSomeVariable("foo");
}
});
私はというエラーを取得しかし、「方法getApplicationは()型の新しいAdapterView.OnItemClickListener(){}のために定義されていません」。
私はこのエラーが発生する理由とその修正方法、または1つのアクティビティから別のアクティビティに変数を渡すより良い方法を知りたいと思います。
おかげで、
TJ
MyApplicationは、setSomeVariable()を使用する場所とは異なるクラスです。私はMyOtherApplicationの中でそれをやりたいと思っていますが、setSomeVariableメソッドはMyApplicationで定義されています。だからあなたが示唆したものは、そのまま働いているわけではありません。 – TJ1
それは完全に私が書いたコードで、 "getApplication()"あなたがあなたがMyOtherApplication.thisを書く必要があるクラスMyOtherApplicationの中にあなたが望むクラスを得るメソッドを書いています...あなたがannonymousクラスの中でそれを呼び出すので、キーワード "this"は内部クラスを参照します。 – Michele