我目前有一个父类,它有两个子类,我基本上想要做的是让它们都继承一个共享变量(一个浮点数)。我需要在subclass1中设置float的值,然后在subclass2中使用float的值。我应该补充一点,这些都是android活动,并且子类1位于一系列活动的开头,而子类2位于此链的末尾,其间的所有活动也是同一父类的子项。
我目前拥有的内容类似于以下内容: (我已经留下了很多其他代码,这只是一块骨头)
class activityParent extends Activity{
public static float value;
public void setValue(){
//grab the value from phone (ill leave this code out and will hardcode a value below as an example)
value = 0.6f;
}
public void useValue(){
//where i use the value in another function here
otherFuncion(value);
}
}
class subclass1 extends activityParent
{
@Override
public void onCreate(Bundle bundle){
setValue();//need this to be initialized first
super.onCreate(bundle);
}
}
class subclass2 extends activityParent{
//some previous code here
//i need to use the value just before the activity finishes
useValue();
finish();
}
浮动值永远不会在其他任何地方使用。
这种做法似乎错了,我知道,但我不确定如何正确实施这一点。
我正在考虑使用意图传递数据但是如上所述,这两个子类并不直接相互接触,它们之间有一系列活动,而不是必须将这些数据通过它们串起来只是为了到达终点。
答案 0 :(得分:0)
以下链接中讨论了常见问题解答。
How do I pass data between Activities/Services within a single application?
理想情况下,由于您要共享原始数据类型(浮动),建议使用意图。但由于这不符合您的要求,您可以跳过这个。
接下来,使用“static”(你当前正在做的)也没关系。您可以从应用程序中的任何其他类访问这些静态字段。
但是,如果你想要一个替代,那么可以使用“Singleton”类。这是一个只有一个实例的类。
public class Singleton {
private static Singleton INSTANCE ;
private Singleton() {}
public static synchronized Singleton getInstance() {
if(INSTANCE == null){
INSTANCE = new Singleton();
}
return INSTANCE;
}
}
它有一个静态方法,其名称如getInstance()可返回实例;第一次调用此方法时,它会创建全局实例。
例如,活动子类1可以检索实例并调用setValue(0.6);稍后的活动子类2可以检索实例并调用getValue()来检索最后一个设置值。
答案 1 :(得分:0)
对一系列课程要非常小心。 onCreate()
SubClass1
的{{1}}调用super.onCreate()
,onCreate()
ActivityParent
。这可能会引发连锁反应(ActivityParent
仍然可以使用onCreate()
的意图。