1

考虑以下场景:
TemplateActivity扩展Activity。在onResume()它内部执行一个布尔变量的验证,如果为 false,它完成方法和活动,并开始一个新的活动,OtherActivity

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

问题:
有没有办法终止ChildActivity何时OtherActivity需要从 开始TemplateActivity?没有在子类中实现有效性检查。

超类:

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

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

        //Do stuff
    }
}

子类:

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

        //Do stuff
    }
}
4

2 回答 2

5

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

  1. 在. DoStuff()_ TemplateActivity在那里做所有的// 做东西位。
  2. 从末尾调用此方法TemplateActivity OnResume
  3. 在子活动中覆盖它以使用子活动扩展它//做东西位。
  4. 不要在 ChildActivity 中覆盖onResume

这样,如果在 TemplateActivity OnResume 中触发条件,则不会执行任何父 DoStuff 和子 DoStuff。ChildActivity不应该对这种行为有任何了解。

于 2012-10-02T18:42:10.873 回答
1

我想这就是你想要得到的:

class ChildActivity extends TemplateActivity {
    @Override
    protected void onResume() {
        super.onResume();
        if (!isFinishing()) {
            // Do stuff
        }
    }
}
于 2012-10-02T18:42:28.510 回答