吸气剂返回null

csd*_*cac 2 java null android encapsulation

我知道为什么会出现我的问题,但不确定如何处理。

因此,我有3个班级,其中1个班级是我的getters和setters。在一个类中,我正在设置值,在另一类中,我正在获取值。当我获得值时,它们将返回null。显然,这是因为我在类中创建的getter / setter对象的两个实例是相互独立的。我试图找出的是如何在一个类中设置值并在另一个类中获取它们,而又没有getter / setter类的两个单独实例。我的措辞很糟糕,所以这里有一个更直观的解释:

1类

Encapsulation encap = new Encapsulation();
encap.setValue(10);
Run Code Online (Sandbox Code Playgroud)

2级

Encapsulation encap = new Encapsulation();
encap.getValue(); //I want this to return 10
Run Code Online (Sandbox Code Playgroud)

3类(封装)

private int value;

public void setValue(int value){
    this.value = value;
}

public int getValue(){
    return value
}
Run Code Online (Sandbox Code Playgroud)

Mys*_*icϡ 5

在Class2中,您正在创建类Encapsulation的新实例。(注意new Encapsulation())。所以很明显,那将不包含价值。

相反,我建议您两个解决方案:

第一:

在处理Android应用程序时,将该对象保存在Application类中。

public class TestApplication extends Application {
    public Encapsulation tempClass;
    public TestApplication () {
        // TODO Auto-generated constructor stub
    }

    @Override
    public void onCreate() { 
        // TODO Auto-generated method stub
        super.onCreate();
    }

    public Encapsulation getTempClass() {
        return tempClass;
    }

    public void setTempClass(Encapsulation tempClass) {
        this.tempClass  = tempClass;
    }
}
Run Code Online (Sandbox Code Playgroud)

现在在您的活动中:

//after setContentView
testAppObj = (TestApplication) getApplication();
testAppObj.setTempClass(myTempClassObj);

//retrieve as:
Encapsulation obj = testAppObj.getTempClass();
Run Code Online (Sandbox Code Playgroud)

您必须在清单文件中注册Application类,就像注册活动一样:

<application
        android:name="com.pkg.test.TestApplication " />
Run Code Online (Sandbox Code Playgroud)

第二:

在Class1中,保持对象封装为静态。因此,您可以从calss2访问它。(我不喜欢静态的。)

希望能帮助到你。