如何从另一个类读取变量?

时间:2011-11-01 22:57:38

标签: java android

我想知道如何从一个类到另一个类读取变量?

我有两个类,triangle.java和screen.java

在triangle.java中的

我有:public double bound = 0;

如何在Screen.java中读取该变量?

triangle.java:

public class triangle extends Activity
{

public EditText txtbound;
public double bound = 0;

txtbound = (EditText)findViewById(R.id.txtbound);

public double calculate()
{
    bound=Double.parseDouble(txtbound.getText().toString());

    // do maths here

}
}

和Screen.java有:

double bound1 = triangle.bound;   

这不起作用,如何在Screen.java中获取变量?谢谢!

5 个答案:

答案 0 :(得分:0)

在triangle.java中执行public static double bound=0

然后导入triangle.java后, 你可以在screen.java或任何其他的something.java

中做double bound1 = triangle.bound

答案 1 :(得分:0)

在Screen类中将bound1设为私有,如

private double bound1; //do not initialize fields here

在屏幕中使用getters / setters

    public double getBound() {
      return bound1;
    }

    public void setBound(double bound1) {
        this.bound1 = bound1;
    }

在Triangle获取Screen的实例:

Screen scr = new Screen();
scr.setBound(this.bound); --> this way the bound1 in Screen will have the value of bound from Triangle

以大写字母开头命名您的类是一种惯例。 在声明它们时,您也不必初始化类字段。更好 使用构造函数。 我建议你阅读这个tutorial以更熟悉类,字段和变量。从长远来看,这将节省您的时间。

答案 2 :(得分:0)

您只能通过创建其中的对象来访问另一个类的属性,如

double bound1 = new Triangle().bound; 

或者您需要将变量设为静态,以便变量不需要像

这样的对象实例
public static double bound = 0;

并使用

double bound1 = Triangle.bound; 

我之前没有注意到,但是你的类扩展了活动类,在这种情况下请使用静态方法。您不应使用“new”

创建活动实例

要在活动之间分享价值, 您可以扩展应用程序类。并在那里添加您的属性。 您可以使用此命令

访问该类的实例
MyApplication appContext = (MyApplication)getApplicationContext();
double bound1 = appContext.bound;

这是一个单例,因此它将始终返回相同的实例。 要完成这项工作,您需要将其添加到清单文件的应用程序标记

android:name=".MyApplication"

答案 3 :(得分:0)

如果没有Triangle类的实例,则无法获取triangle.bound的值。但由于它是一个活动,你可能需要使绑定静态。

public static double bound = 0;

但一个好的做法是在另一个类(不是一个活动)中绑定一个静态变量,并从那里设置/获取它的值。

public class MyClass
{
    public static double bound = 0;
}

然后在三角类中设置其值并在Screen.java中使用它

答案 4 :(得分:0)

Java约定会说你需要一个返回实例值的getBound()方法。

如果静态变量是类级变量并且所有实例都可以共享相同的值,那么使用静态变量是很好的,但在这种情况下,我很可能会提供正常的getter。