如何使用setter和getters在android中的类之间传递数据

时间:2012-07-25 19:11:40

标签: java android android-activity surfaceview

我正在编写一个包含两个类的程序,一个扩展Activity,另一个扩展SurfaceView。该活动具有SurfaceView类的对象。我试图使用setter和getter在这两个类之间发送数据,但每次我尝试时,eclipse都说设置和获取的方法需要是静态的。我无法做到这一点,因为我不希望它们是静态的。

Activity类包含以下方法:

public float getxTouch(){
return xTouch;
}
public float getyTouch(){
return yTouch;
}

SufaceView类包含以下代码:

xpos = ActivityClass.getxTouch();
ypos = ActivityClass.getyTouch();

如何在不使方法静态的情况下解决这个问题?

2 个答案:

答案 0 :(得分:0)

将活动类的引用传递给表面类。做这样的事情,所以你不必使方法静态。

在SurfaceView类中:

Activity foo;

//some method to set foo:

public void setFoo(Activity foo) {
this.foo = foo;
}

// Then you can simple call your getX() and getY() methods like this:

foo.getX(); and foo.getY();

来自您的Activity类:

yourSurfaceViewInstance.setFoo(this);

答案 1 :(得分:0)

您可以使用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    
}

然后,在您的活动的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上下文来读取它们。