Создать и показать фрагмент из другого модуля - PullRequest
0 голосов
/ 01 мая 2018

Мой модуль приложения включает в себя библиотеку с именем Z, но в Z мне нужно создать и показать экземпляр фрагмента, который определен в приложении, как я могу это сделать?

Я нашел это, но проблема в том, что я не определил BillingFragment, пока я нахожусь в модуле Z.

Class<?> class = Class.forName("example.package.BillingFragment");
Constructor<?> cons = class.getConstructor(BillingFragment.class);
BillingFragment object = (BillingFragment) cons.newInstance();

1 Ответ

0 голосов
/ 01 мая 2018

Если у вас уже есть доступ к фрагменту, и вы хотите создать экземпляр, используя общедоступное значение по умолчанию no arg constructor, вы можете просто позвонить:

Constructor constructor= BillingFragment.class.getConstructor();
BillingFragment fragment = (BillingFragment)constructor.newInstance();

или даже лучше использовать публичный статический newInstance метод:

Method method = BillingFragment.class.getMethod("newInstance", Class<?>... parameterTypes);
BillingFragment fragment = (BillingFragment) method.invoke(null, Object... args);

PS: вы должны воздержаться от использования жестко закодированных строк, таких как "example.package.BillingFragment" или "newInstance", так как эти строки стали недействительными, если приложение получило обфусцировано, В противном случае не забудьте сохранить имена классов и методов в proguard-rules, если вам действительно нужно.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...