My App模块包含一个名为Z的库,但在Z中我需要创建并显示在App中定义的Fragment实例,我该怎么做?
我发现了这一点,但问题是我在模块Z中没有定义BillingFragment
。
Class<?> class = Class.forName("example.package.BillingFragment");
Constructor<?> cons = class.getConstructor(BillingFragment.class);
BillingFragment object = (BillingFragment) cons.newInstance();
答案 0 :(得分:0)
如果您已经有权访问该片段,并且想要使用公共默认值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
中的类和方法名称。