我正在编写一个具有两个类的程序,一个扩展 Activity,另一个扩展 SurfaceView。该 Activity 有一个 SurfaceView 类的对象。我试图使用 setter 和 getter 在这两个类之间发送数据,但每次我尝试时,eclipse 都会说设置和获取的方法需要是静态的。我不能这样做,因为我不希望它们是静态的。
Activity 类包含以下方法:
public float getxTouch(){
return xTouch;
}
public float getyTouch(){
return yTouch;
}
SufaceView 类包含以下代码:
xpos = ActivityClass.getxTouch();
ypos = ActivityClass.getyTouch();
如何在不使方法静态化的情况下解决此问题?
最佳答案
您可以使用 Intents 在 Activity 和类之间传输变量引用。
首先,让我们创建一个包含变量的可序列化类:
class XYTouch implements Serializable{
public static final String EXTRA = "com.your.package.XYTOUCH_EXTRA";
private float xTouch;
public void setX(String x) {
this.xTouch = x;
}
public String getX() {
return xTouch;
}
// do the same for yTouch
}
然后,在 Activity 的 onCreate
中,创建一个新的 XYTouch 对象,并使用 set 和 get 方法设置其 xTouch 和 yTouch 属性。然后写
Intent intent = new Intent(this, OtherClass.class);
intent.putExtra(XYTouch.EXTRA, xytouchobject);
startActivity(intent);
在您想要访问这些变量的其他类(OtherClass)中:
public void onCreate(Bundle savedInstance){
// ....
XYTouch xytouch = (XYTouch) getIntent().getSerializableExtra(XYTouch.EXTRA);
// ....
}
然后,您可以在类中的任何位置使用 XYTouch 的 get 和 set 方法来引用 xTouch 和 yTouch。
另一种方法是从您自己的类中检索它,该类扩展了 Application 并保留对这些变量的引用。然后您将使用 Activity 上下文来读取它们。
关于java - 如何使用setter和getter在android中的类之间传递数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11656879/