我想在android的活动之间传递一个或多个变量。一种解决方案是使用全局变量,如下所示:Android全局变量我在这里重复:
你可以扩展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");
}
});
然而,我得到一个错误,说"方法getApplication()是未定义的类型new AdapterView.OnItemClickListener(){}"。
我想知道是什么原因,我得到这个错误和如何修复它,或者一个更好的方式传递一个变量从一个活动到另一个。
谢谢,
TJ
在匿名类中你不能这么说。你必须围绕内部类指定Class。
像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");
}
}
}
匿名内部类中的"this."指向内部类本身。
你没有使用Intent的原因是什么?http://developer.android.com/guide/topics/fundamentals/activities.html StartingAnActivity
如果您在MyClass的成员函数中定义了匿名OnItemClickListener,则可以使用MyClass.this. getapplication()。OnItemClickListener不知道应用程序
我认为你不需要强制转换它…应用程序已经存在了。
MyApplication.getSomeVariable();