android 反射静态方法传值
16lz
2021-01-25
因为项目用到了模块化,library中调用app类中的方法只能通过反射
这里是app中的类,startAction方法需要接收从library传过来的值
public class ManuscriptDetailActivity extends BaseActivity { //将数据传到startAction中 public static void startAction(Context mContext, String postId, String position) {}}
第一种方法
在library中不可以直接调用 ManuscriptDetailActivity.startAction()方法,因为调用不到。所以只能通过反射。
try { ClassLoader loader = DepartmentReportDetailActivity.class.getClassLoader();//得到当前类的classLoader Class<?> clz; clz = loader.loadClass("com.founder.mobileeditor.mobileeditor3.ui.main.modules.activity.ManuscriptDetailActivity"); //加载类 Method m = clz.getDeclaredMethod("startAction", Context.class, String.class, String.class); //获取方法 m.invoke(clz, DepartmentReportDetailActivity.this,docId , ""); //反射调用,static方法调用时,不必得到对象示例 } catch (Exception e) { e.printStackTrace(); }
第二种方法
try { Class<?> name = Class.forName("com.founder.mobileeditor.mobileeditor3.ui.main.modules.activity.ManuscriptDetailActivity"); Method method = name.getDeclaredMethod("startAction", Context.class, String.class, String.class, String.class, String.class, String.class); method.invoke(name,DepartmentReportDetailActivity.this, String.valueOf(docId), "", String.valueOf(docLibId), "", ""); } catch (Exception e) { e.printStackTrace(); }
更多相关文章
- Android百度地图开发
- Drawable、Bitmap、byte[]之间的转换 (转)
- android 子线程 UI线程(主线程)通信
- 按钮的隐藏与不可见
- Android必备的Java知识点
- 3种Android隐藏顶部状态栏及标题栏的方法
- android 强制设置横屏 判断是横屏还是竖屏
- 【android之ADB命令】ADB SHELL 命令乱码解决方法
- net :: ERR_CLEARTEXT_NOT_PERMITTED