从其父类完成子类活动

sly*_*oty 1 android superclass android-intent activity-finish android-activity

请考虑以下情形:
TemplateActivity扩展Activity。在onResume()其中执行布尔变量的验证,如果为false,则完成方法和活动,并开始一个新活动OtherActivity

ChildActivity扩展的类TemplateActivity运行时,它等待super.onResume()完成,然后继续,无论其父级是否需要启动Intent

问题:当需要从那里开始时,
是否有一种方法可以终止?没有在子类中执行有效性检查。ChildActivityOtherActivityTemplateActivity

超类:

class TemplateActivity extends Activity {
    @Override
    protected void onResume() {
        super.onResume();

        if(!initialized)
        {
            startActivity(new Intent(this, OtherActivity.class));
            finish();
            return;
        }

        //Do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

子类:

class ChildActivity extends TemplateActivity {
    @Override
    protected void onResume() {
        super.onResume();

        //Do stuff
    }
}
Run Code Online (Sandbox Code Playgroud)

Pau*_*Jan 5

更好的解决方案是类设计的方法稍有不同:

  1. 在中引入一种方法DoStuff()(用明智的名称代替)TemplateActivity//在那里做所有的工作。
  2. 从结尾处调用此方法 TemplateActivity OnResume
  3. 在子活动中覆盖它,以通过子活动扩展它//做填充位。
  4. 难道不是覆盖onResume在ChildActivity。

这样,如果条件在TemplateActivity OnResume中触发,则父子DoStuff和子DoStuff都不会完成。本ChildActivity不应该知道什么有关此问题。