gpt4 book ai didi

android - 尝试在空对象引用上调用虚方法 - 全局变量类

转载 作者:行者123 更新时间:2023-11-29 19:15:05 25 4
gpt4 key购买 nike

我正在学习 MVC。我的项目有很多变量。所以我为他们创建了一个名为 MainVariables 的新类。

public class MainVariables {

private String mPictureDirectory;
private String mNameOfThePictureFile;
private String mFullPathPicture;
private double mLongitude;
private double mLatitude;
private String mAddress;
private String mCity;
private String mState;
private String mCountry;
private String mPostalCode;
private String mKnownName;
private String mDescription;
private String mSolicitationType;
...
...

其余部分由每个变量的自动 getter 和 setter 组成。

我在跨应用程序访问和转换这些变量时遇到问题。

我尝试通过在其他文件中强制转换以下内容来访问它:

private MainVariables mMainVariables;

上面的代码抛出错误Attempt to invoke virtual method on a null object reference

然后我尝试了以下方法:

private MainVariables mMainVariables = new MainVariables();

现在,这确实有效。仅在它使用的文件中。例如,我在“SolicitationFragment”中设置变量,当我尝试在“PostFragment”上访问它时,我得到一个空结果。

那是因为我必须在每个文件上初始化 MainVariables。

我怎样才能解决这个问题并能够全局访问我的变量?

最佳答案

如果您不打算更改它们,请将变量设为静态或最终。这样你就不必创建一个新的实例并且可以立即调用 MainVariables.mPictureDirectory

public class MainVariables {
public static String mPictureDirectory;
}

另一种选择是单例模式,这样你只创建一个对象的一个​​实例并且仍然可以使用 getter 和 setter

public class MainVariables {
private static MainVariables mInstance = null;

private String mString;

private MainVariables(){
mString = "Hello";
}

public static MainVariables getInstance(){
if(mInstance == null)
{
synchronized (MainVariables.class) {
if (mInstance== null) {
mInstance= new MainVariables();
}
}
return mInstance;
}

public String getString(){
return this.mString;
}

public void setString(String value){
mString = value;
}
}

在您的 MainActivity 中,您可以声明一个字段
MainVariables mainVariables = MainVariables.getInstance()
并调用
mainVariables.[METHOD] 来自 MainActivity 中的基本上任何地方

关于android - 尝试在空对象引用上调用虚方法 - 全局变量类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43814137/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com