我想在android中的活动之间传递一个或多个变量。一种解决方案是使用全局变量,这里解释如下: Android global variable 我在此重复一遍:
您可以扩展基础android.app.Application类并添加成员变量,如下所示:
public class MyApplication extends Application {
private String someVariable;
public String getSomeVariable() {
return someVariable;
}
public void setSomeVariable(String someVariable) {
this.someVariable = someVariable;
}
}
然后在您的活动中,您可以像这样获取和设置变量:
// set
((MyApplication) this.getApplication()).setSomeVariable("foo");
// get
String s = ((MyApplication) this.getApplication()).getSomeVariable();
我想使用它并在按下ListView上的项目时在我的一个活动中设置一个全局变量。所以我有这个代码:
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
.
.
.
((MyApplication) this.getApplication()).setSomeVariable("foo");
}
});
但是我收到一条错误,上面写着“新的AdapterView.OnItemClickListener(){}”类型的方法getApplication()未定义。
我想知道出现此错误的原因是什么以及如何修复它,或者是将变量从一个活动传递到另一个活动的更好方法。
谢谢,
TJ
答案 0 :(得分:4)
在匿名类中你不能这样说。你必须在内部类中指定类。
喜欢MyApplication.this.get ..
使用时:
class MyApplication {
lv.setOnItemClickListener(new OnItemClickListener() {
public void onItemClick(AdapterView<?> parent, View view,
int position, long id) {
((MyApplication) MyApplication.this.getApplication()).setSomeVariable("foo");
}
}
}
“这个”。在一个喧嚣的内心阶级里面,指的是内在阶级本身。
答案 1 :(得分:1)
你没有使用Intent的任何特殊原因? http://developer.android.com/guide/topics/fundamentals/activities.html#StartingAnActivity
答案 2 :(得分:0)
如果您在MyClass的成员函数中定义了匿名OnItemClickListener,则可以使用MyClass.this.getApplication()。 OnItemClickListener不了解应用程序。
答案 3 :(得分:0)
我认为你不需要施放它......应用程序已经存在。
MyApplication.getSomeVariable();
应该像任何其他类一样工作。