开发者社区> 问答> 正文

您可以在子活动中使用构造函数来更改“父母活动字符串”变量吗?

我有一个父活动类,我的所有子活动类都从中扩展。此父活动具有一个名为“ activity_Id”的字段,该字段为字符串,默认为空。

在父活动的onCreate中,我需要检查该字段是否具有一个值,如果我在父活动的onCreate中执行其他逻辑,则只能从子活动中获取该值。

请注意,每个活动都有一个唯一的“ 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类中。

这似乎是一种清洁方式,但是在活动中使用构造函数似乎有些禁忌,所以我只想确保自己不破坏任何内容。或者,如果有人可以想到一种更清洁的方法呢?

展开
收起
Puppet 2020-01-17 09:52:20 354 0
1 条回答
写回答
取消 提交回答
  • 这可以用抽象类完成,因为构造函数不会直接构造活动。

    像这样尝试

    
    public abstract class ParentActivity extends Activity{
        protected abstract String activityId();
        .....
    }
    

    然后在子活动中覆盖activityId()所需的值。现在你可以比较activityId()的ParentActivity onCreate(...)方法。

    2020-01-17 09:53:07
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载