如何在android模块中使用全局变量

时间:2018-11-14 12:57:58

标签: android

我在库中使用单例来保存数据,但是有时发现当用户获得单例变量时,用户返回null。还有其他方法吗?

我目前正在使用单例模式。

public class Factory {

    private static Factory sInstance = null;

    private final Config mConfig;
    public Factory(Config config) {
        mConfig = config;
    }

    public static Factory getInstance() {
        return sInstance;
    }
}

在线的某些用户发现以下调用将返回null。

Factory.getInstance().mConfig

1 个答案:

答案 0 :(得分:1)

您可以扩展android.app.Application基类,并添加成员变量,如下所示:

public class MyApplication extends Application {

    private String someVariable;

    public String getSomeVariable() {
        return someVariable;
    }

    public void setSomeVariable(String someVariable) {
        this.someVariable = someVariable;
    }
}

在您的android清单中,您必须声明实现android.app.Application的类(将android:name=".MyApplication"属性添加到现有应用程序标签中):

<application 
  android:name=".MyApplication" 
  android:icon="@drawable/icon" 
  android:label="@string/app_name">

然后在您的活动中,可以像这样获取并设置变量:

// set
((MyApplication) this.getApplication()).setSomeVariable("foo");

// get
String s = ((MyApplication) this.getApplication()).getSomeVariable();