如何在不同于'Application'和"活动"的扩展中实现全局变量?



我正在尝试在使用BLEgatt服务的Android Studio应用程序中实现全局变量。我需要将从BLE收到的数字保存在全局变量中。

所以我创建了这个类:

public class Globals extends Application {
    private List<Float> current = new ArrayList<>();
    public float getCurrent() {
        return current.get(current.size()-1);
    }
    public void setCurrent(float someVariable) {
        this.current.add(someVariable);
    }
}

我还用android:name修改了清单。我可以在主活动和某些片段中正确使用这些函数。但我想在与应用程序或活动不同的其他扩展中实现它。

在另一个java文件中,我有这个类:

class SerialSocket extends BluetoothGattCallback {
    // Here how can i get the function declared in Globals??
    Globals globalClass = (Globals) getApplicationContext(); 

显然,我不能在蓝牙GattCallback extend中使用getApplicationContext((,但是我可以使用什么代码?

您可以创建全局和访问的静态实例。

public class Globals extends Application {
    private static Globals instance;
    private List<Float> current = new ArrayList<>();
    @Override
    public void onCreate() {
        instance = this;
        super.onCreate();
    }
    public float getCurrent() {
        return current.get(current.size()-1);
    }
    public void setCurrent(float someVariable) {
        this.current.add(someVariable);
    }
    public static Globals getInstance() {
        return instance;
    }
    public static Context getContext(){
       return instance;
    // or return instance.getApplicationContext();
   } 
}
现在,在

应用程序中的任何地方,您都可以访问当前变量或通过以下方式更改值

Globals.getInstance().getCurrent();

相关内容

  • 没有找到相关文章

最新更新