我知道为什么我的问题正在发生,但我不确定如何处理它。
所以我有3个课程,其中1个课程包括我的课程和课程。 setter方法。在一个班级中我设置了值,在另一个班级中我得到了值。当我得到值时,它们返回null。这显然是因为我在类中创建的getter / setter对象的两个实例彼此分开。我想要找出的是我如何在一个类中设置值并将它们放在另一个类中,而没有两个单独的getter / setter类实例。我的措辞太可怕了,所以这里有一个更直观的解释:
第1课
Encapsulation encap = new Encapsulation();
encap.setValue(10);
第2课
Encapsulation encap = new Encapsulation();
encap.getValue(); //I want this to return 10
第3类(封装)
private int value;
public void setValue(int value){
this.value = value;
}
public int getValue(){
return value
}
答案 0 :(得分:4)
在Class2中,您正在创建类Encapsulation的新实例。 (注意新的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;
}
}
现在进入您的活动:
//after setContentView
testAppObj = (TestApplication) getApplication();
testAppObj.setTempClass(myTempClassObj);
//retrieve as:
Encapsulation obj = testAppObj.getTempClass();
您必须在清单文件中注册Application类,就像注册活动一样:
<application
android:name="com.pkg.test.TestApplication " />
<强>第二强>
在Class1中将对象封装保持为静态。所以你可以从calss2访问它。 (我不喜欢静电。)
希望它有所帮助。
答案 1 :(得分:3)
使值静态,它将在所有Encapsulation
个实例中保持相同的值
private static int value;
public void setValue(int aValue){
value = aValue;
}
public int getValue(){
return value;
}
答案 2 :(得分:0)
只需声明一次Encapsulation类的对象,并使用相同的实例来调用getter和setter。
像这样:
Encapsulation encap = new Encapsulation();
encap.setValue(10);
encap.getValue();
有效。