2013-10-20 4 views
3

Я столкнулся с проблемой в собеседовании о том, могу ли я динамически добавлять новую активность в приложение для Android, не выпуская новую версию приложения. И он сказал мне, что существует определенный механизм, который мы могли бы динамически изменить Activity на новый, без регистрации в файле AndroidManifest.xml. Я искал некоторые документы, но не нашел возможного способа сделать это.androidmanifest.xml

Можно ли начать работу без регистрации в файле AndroidManifest.xml? Можно ли динамически модифицировать существующую активность?

+1

Для динамического изменения активности, я считаю, что он имел в виду фрагмент. Вы можете выбрать только одно действие из всего приложения, все, что вы делаете, это переключить его содержащие фрагменты. Который, если это так, ваш собеседник, возможно, не сможет различать фрагмент и активность, или он тестирует вас. –

ответ

1

Can I start an Activity without registering in the AndroidManifest.xml file?

Нет, я не думаю, что вы можете начать деятельность, которая не зарегистрирована в файле AndroidManifest.xml. Файл манифеста отслеживает действия, которые приложение может использовать при компиляции/создании приложения. Любая попытка открыть незарегистрированную деятельность приведет к сбою приложения.

And is it possible to dynamically modify the existing Activity?

Как сказал Бетт Devine, вы можете изменить расположение существующей деятельности по телефону setContentView(R.layout.new_layout); на основе некоторых действий пользователя (как нажатие кнопки). Однако вызов setContentView более одного раза в вашей деятельности - это плохая практика, которую люди обычно избегают делать. Это не рекомендуется, так как вам придется писать код, который будет управлять взаимодействием пользователя для второго макета. Представьте, что вы пишете два кода активности в одном java-файле. Это приведет к ненужному помехам кода, когда вы сможете просто написать их отдельно.

1

Да, возможно динамическое изменение существующего. Здесь изменение не означает, что вы меняете имя операции, но означает, что вы меняете контент.

Просто вызовите метод активности setContentView, чтобы создать новый макет для activiy, и теперь у вас будет целый контент.

setContentView(R.layout.new_layout); 
Смежные вопросы