2011-11-01 49 views
1

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

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

我有:公共双重约束= 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变量?谢谢!

回答

0

使Screen类bound1私人像

double bound1 = triangle.bound在屏幕
private double bound1; //do not initialize fields here 

使用getter/setter方法类似

public double getBound() { 
     return bound1; 
    } 

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

在三角形获取屏幕的实例:

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

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

0

在triangle.java做public static double bound=0

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

+0

这是因为'bound'将是一个类变量而不是一个实例变量,更多信息请参阅http://download.oracle.com/javase/tutorial/java/javaOO/classvars.html – Optimus

0

您只能通过创建像

double bound1 = new Triangle().bound; 

它的对象访问另一个类的属性,或者你需要做的静态变量,这样变量不需要像

public static double bound = 0; 
对象实例

而且使用像

double bound1 = Triangle.bound; 

我刚才没有注意到,但你的类扩展活动类,在这种情况下使用静态方法。您不应使用“新建”创建活动实例

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

MyApplication appContext = (MyApplication)getApplicationContext(); 
double bound1 = appContext.bound; 

这是一个单身所以它总是会返回同一个实例访问类的实例。 为了使这项工作,你需要这个无类三角形的一个实例添加到这个清单文件

android:name=".MyApplication" 
0

你不能得到triangle.bound价值的应用标签。但由于这是一项活动,因此您可能需要进行静态绑定。

public static double bound = 0; 

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

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

然后将其值设置在三角形类,并用它在Screen.java

0

Java约定要说的是,你需要返回该实例的值getBound()方法。

如果使用静态变量是一个类级别的变量,并且所有实例可以共享相同的值,那么我最好提供一个普通的getter。

相关问题