无需在Manifest中注册基础Activity类?

我有我自己的扩展Activity类的基类抽象类。

 public abstract class BaseActivity extends Activity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(getLayoutResourceId()); } protected abstract int getLayoutResourceId(); } public class Activity1 extends BaseActivity { @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); // do extra stuff } @Override protected int getLayoutResourceId() { return R.layout.layout_for_activity1; } } 

我的基类BaseActivity没有注册在Manifest文件中,我没有得到任何错误。

这是一个定时炸弹(不是在Manifest中注册基类)或者这是应该的方式吗? 有人能解释为什么吗?

Solutions Collecting From Web of "无需在Manifest中注册基础Activity类?"

根据文档,清单上的<activity>

声明实现应用程序的可视化用户界面的一部分的活动(一个Activity子类)。 所有活动必须由清单文件中的元素表示。 任何 没有被声明的东西都不会被系统看到,也不会被 运行

想想这样:如果有一个活动(扩展Activity任何类或扩展它的类),您将在应用程序的某个位置导航到它,它需要在清单中声明。 不pipe你如何达到这个活动。 这不包括只扩展Activity类但不能直接访问的类。

资源

您不需要在清单中注册BaseActivity类,因为它不是您打算启动的那个类。

例如:

 Intent i = new Intent(context, Activity1.class); startActivity(i); 

在上面的代码中,您需要在清单中注册Activity1活动,因为您在意图中提到了它, 而不是 BaseActivity类。