我有一个活动说A是由许多其他活动扩展的,我在活动A中有一个变量,由所有其他子活动(类)扩展它。我想知道我是否可以从子活动设置该变量的值,以便更改将反映在扩展活动a的所有其他子类中。我知道这是一个基本的问题,我是新手,任何帮助都是感激的。
eg:
Activity A has
public String global = "ABC"
Activity B extent A
display(global); ---> ABC
Activity C extent A
display(global); ---> ABC
Activity D extent A
display(global); ---> ABC
现在我如何改变活动D的全局,使活动B和C也应该受到影响。
似乎您想要一个值始终保持不变的变量。
但是,由于您只希望您的继承类能够更新或读取变量,您可以这样做:
class A
{
private static int your_var = 0;
public int get()
{
return your_var;
}
public void set(int a)
{
your_var = a;
}
}
class B extends A
{
}
class C extends A
{
}
在静态void main中:
new B().set(101);
new C().get() // this will return value 101.
注意:这里只创建了变量your_var的一个副本。由于它是私有的,只有非静态的getter setter方法才能读取或修改它。从而使它只能被包含类本身或子类对象访问。
您需要在Activity a中创建一个静态变量。
静态变量是类的变量,而不是对象的变量。
你可以有一个可以保存全局数据的单例类,当需要时,你可以从单例类的单个共享实例中获取数据。但还有另一种更好的方法。
你需要一个类来管理你的活动。在任何应用程序中,我们通常都有一个这样的类(可能是一些initializer或main或manager类),它连接实体并初始化我们的应用程序。
在android中,我们有一个Application类,它可以保存全局数据。参考Android全局变量
尝试以下操作:A类
public static String global = "ABC";
在B类
public class B extends A {
public static void main(String[] args) {
B b = new B();
A a = new A();
System.out.println(b.global);
System.out.println(a.global);
System.out.println(global);
}
}
或者你可以尝试使用封装:将字符串标记为私有,并通过getter和setter使"全局"字符串可用。这通常是比使用静态变量
更灵活的解决方案。http://www.tutorialspoint.com/java/java_encapsulation.htm