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

标签 java android android-activity surfaceview

我正在编写一个具有两个类的程序,一个扩展 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/

相关文章:

java - 在类 Unix 机器上运行 Talend 作业

android - Android Studio 自动调整 ConstraintLayout 大小

Android Room 删除级联不起作用

Android 运行时权限 - 用户撤销权限时应用程序崩溃。如何处理?

java - : Hand over points to GameOverActivity

java - 使用 Objective-C 和 Java 的 Google Protocol Buffers

java - JAXB 列表作为顶级 XML

java - 如何找到JPA的版本?

Android 在应用程序中运行 su

java - 使用 getIntent 从另一个类获取时字符串为 null