您可以使用 Child Activity 中的构造函数来更改 Parent Activity 字符串变量吗?
Can you use a constructor in Child Activity to change Parent Activity String variable?
我有一个 Parent Activity class 我所有的 Child Activity class 都是从这里延伸出来的。
这个 parent activity 有一个名为 'activity_Id' 的字段,它是一个字符串,默认为空。
在 Parent Activity 的 onCreate 中,我需要检查该字段是否有值,它只能从 Child Activity 中获取,如果我确实在 parent activity 的 onCreate 中做了一些其他逻辑。
请注意,每个 activity 都有一个唯一的 'activity_Id',用于更改正在执行的其他逻辑。
这里是 ParentActivity:
public class ParentActivity extends Activity{
protected String activity_Id = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(activity_Id != null)
//DO OTHER LOGIC UNIQUE TO THIS STRING ID
}
}
这里是ChildActivity:
public class ChildActivity extends ParentActivity{
public ChildActivity(){
super();
activity_Id = "Foo123";
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
这个 activity_Id 字符串是预先确定的,但与活动名称不匹配,所以我不能这样做
this.getClass().getName()
在我的 ParentActivity class.
这似乎是一种清洁方式,但在活动中使用构造函数似乎存在一些禁忌,所以我只想确保我不会破坏任何东西。或者,如果有人能想出更简洁的方法来做到这一点?
这可以通过抽象 class 来完成,因为构造函数不会直接构造 activity。
像这样尝试
public abstract class ParentActivity extends Activity{
protected abstract String activityId();
.....
}
然后在子 activity 中用所需值覆盖 activityId()
。现在您可以在 ParentActivity
onCreate(...)
方法中比较 activityId()
。
我有一个 Parent Activity class 我所有的 Child Activity class 都是从这里延伸出来的。 这个 parent activity 有一个名为 'activity_Id' 的字段,它是一个字符串,默认为空。
在 Parent Activity 的 onCreate 中,我需要检查该字段是否有值,它只能从 Child Activity 中获取,如果我确实在 parent activity 的 onCreate 中做了一些其他逻辑。
请注意,每个 activity 都有一个唯一的 'activity_Id',用于更改正在执行的其他逻辑。
这里是 ParentActivity:
public class ParentActivity extends Activity{
protected String activity_Id = null;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(activity_Id != null)
//DO OTHER LOGIC UNIQUE TO THIS STRING ID
}
}
这里是ChildActivity:
public class ChildActivity extends ParentActivity{
public ChildActivity(){
super();
activity_Id = "Foo123";
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
这个 activity_Id 字符串是预先确定的,但与活动名称不匹配,所以我不能这样做
this.getClass().getName()
在我的 ParentActivity class.
这似乎是一种清洁方式,但在活动中使用构造函数似乎存在一些禁忌,所以我只想确保我不会破坏任何东西。或者,如果有人能想出更简洁的方法来做到这一点?
这可以通过抽象 class 来完成,因为构造函数不会直接构造 activity。
像这样尝试
public abstract class ParentActivity extends Activity{
protected abstract String activityId();
.....
}
然后在子 activity 中用所需值覆盖 activityId()
。现在您可以在 ParentActivity
onCreate(...)
方法中比较 activityId()
。