我在一次求职面试中遇到了一个问题,即我是否可以在不发布新版本的应用程序的情况下向 Android 应用程序动态添加新活动。他告诉我,存在某种机制,我们可以动态地将 Activity 更改为新的,而无需在 AndroidManifest.xml 文件中注册。我搜索了一些文档,但没有找到可行的方法。
我可以在不注册 AndroidManifest.xml 文件的情况下启动 Activity 吗?是否可以动态修改现有的Activity?
我在一次求职面试中遇到了一个问题,即我是否可以在不发布新版本的应用程序的情况下向 Android 应用程序动态添加新活动。他告诉我,存在某种机制,我们可以动态地将 Activity 更改为新的,而无需在 AndroidManifest.xml 文件中注册。我搜索了一些文档,但没有找到可行的方法。
我可以在不注册 AndroidManifest.xml 文件的情况下启动 Activity 吗?是否可以动态修改现有的Activity?
是的,可以动态修改现有的。这里的修改并不意味着你在改变一个活动的名称,而是意味着你在改变内容。
只需调用活动的 setContentView 方法为活动提供新的布局,您现在的整个活动将托管不同的内容。
setContentView(R.layout.new_layout);
Can I start an Activity without registering in the AndroidManifest.xml file?
不,我认为您不能启动未在 AndroidManifest.xml 文件中注册的活动。清单文件跟踪应用程序在编译/构建应用程序时可以使用的活动。任何打开未注册活动的尝试都将导致应用程序崩溃。
And is it possible to dynamically modify the existing Activity?
setContentView(R.layout.new_layout);
正如 Bette Devine 所说,您可以通过基于某些用户操作(如按下按钮)的调用来更改现有活动的布局。setContentView
但是,在您的活动中多次调用是一种不好的做法,人们通常会避免这样做。不建议这样做,因为您必须编写代码来管理第二个布局的用户交互。想象一下在一个 java 文件中编写两个活动代码。当您可以单独编写它们时,这将导致不必要的代码混乱。