Android在活动之间传递变量

时间:2011-07-16 15:30:57

标签: android android-activity global-variables parameter-passing

我想在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

4 个答案:

答案 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)

答案 2 :(得分:0)

如果您在MyClass的成员函数中定义了匿名OnItemClickListener,则可以使用MyClass.this.getApplication()。 OnItemClickListener不了解应用程序。

答案 3 :(得分:0)

我认为你不需要施放它......应用程序已经存在。

MyApplication.getSomeVariable();

应该像任何其他类一样工作。