Почему нет AppCompatActivity
getFragmentManager()
вернуть версию поддержки менеджера фрагментов? Вместо этого вы должны сделать свою деятельность AppCompatActivity
И конкретно позвонить getSupportFragmentManager()
. То же самое можно сказать и о десятках других методов. Мне кажется, что вам нужно волшебным образом узнать, какие методы вы можете назвать самими собой, и которые вы должны переименовать в качестве «поддержки». Существует ли какой-либо вариант использования для того, чтобы вызывать «нормальную» версию вместо «поддержки», когда вы по-прежнему поддерживаете более низкие версии Android? Для меня было бы намного больше смысла, если бы AppCompatActivity
функционировал неотличимо от более поздних версий API Activity
. В конце концов, это то, что нужно сделать, не так ли? Обеспечьте те же функции, что и более поздние версии API Activity
?AppCompatActivity design
Есть ли какой-либо принцип дизайна или скрытое ограничение Java, которое мешает им это делать?
Почему бы не создать библиотеку поддержки собственной версии 'android.app.FragmentManager'? (Я предсказываю причины «то, что версия поддержки конфликтует с родной версией в более поздних API» или «соображениями безопасности». Но я не уверен.) – Erhannis
@Erhannis: «Почему бы нет, например, библиотеки поддержки определить собственную версию android.app.FragmentManager? " - потому что тогда приложение, использующее библиотеку, выходит из строя на уровне API 11+, с конфликтующими реализациями 'android.app.FragmentManager'. – CommonsWare
Хм. Я был бы удивлен, если бы не было сложного пути с помощью ClassLoaders и отражения, но я оставлю это. Другое решение, имеющееся для меня, было бы для них обладать подклассовой Activity, а не добавлять к ней методы, поэтому AppCompatActivity и Activity11 или что-то другое реализует getFragmentManager() со своей собственной версией FragmentManager. Я не могу сказать, что мне нравится этот подход; раздражающе неопрятный. Хорошо, я уступаю; Благодарю. Тем не менее, мне все равно не нравятся все методы поддержки; это тоже неопрятно. – Erhannis