考虑以下场景:
TemplateActivity
类扩展了 Activity
。在 onResume()
中,它执行一个 bool 变量的验证,然后,如果为假,它完成方法和 Activity ,并启动一个新的 Activity ,OtherActivity
。
当扩展 TemplateActivity
的类 ChildActivity
运行时,它会等待 super.onResume()
完成,然后继续执行它的 super 是否需要启动 Intent
。
问题:
当OtherActivity
需要从TemplateActivity
启动时,有没有办法终止ChildActivity
?没有在子类中实现有效性检查。
父类(super class):
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
}
}
最佳答案
更优雅的解决方案是类设计的方法略有不同:
- 在
TemplateActivity
中引入一个方法DoStuff()
(替换为合理的名称)。在那里做所有的//do stuff 位。 - 从
TemplateActivity OnResume 的末尾调用此方法
- 在子 Activity 中覆盖它以使用子 Activity //do stuff 位扩展它。
- 不要覆盖 ChildActivity 中的
onResume
。
这样,如果条件在 TemplateActivity OnResume 中触发,父子 DoStuff 都不会完成。 ChildActivity
不必知道关于此行为的任何。
关于android - 完成其父类(super class)的子类 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12696149/