您可以使用 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()