我有一个活动说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也应该受到影响。
答案 0 :(得分:1)
似乎你希望变量值保持不变并始终保持相同。
但是既然你只想让你继承的类能够更新或读取变量,你可以这样做:
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
{
}
在你的静态虚空主体中:
new B().set(101);
new C().get() // this will return value 101.
注意:这里只创建了一个变量your_var的副本。由于它是私有的,因此只有非静态getter setter方法才能读取或修改它。因此,只能通过包含类本身或子类对象来访问它。
答案 1 :(得分:0)
您需要在活动A中创建一个静态变量。
静态变量是类的变量,而不是对象的变量。
答案 2 :(得分:0)
尝试以下方法: 在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);
}
}
或者你可以尝试使用封装:将字符串标记为私有并使" global"通过getter和setter提供的字符串。这通常是一个更灵活的解决方案,然后使用静态变量
答案 3 :(得分:0)
您可以拥有一个可以保存全局数据的单例类,并且在需要时可以从单个类的单个共享实例中获取数据。但还有另一种更好的方法。
您需要一个位于您的活动之上的课程。在任何应用程序中,我们通常都有一个这样的类(可能是一些Initilizer或main或manager类),它们连接实体并启动我们的应用程序。
在android中我们有Application类可以保存全局数据。有关参考,请参阅Android global variable