tyn*_*ynn 31 java reflection android android-source
假设你android:onClick="doClick"在Activityas中定义
protected void doClick(View view) { }
Run Code Online (Sandbox Code Playgroud)
该文件指出,
此名称必须对应于只接受View类型的一个参数的公共方法.
这是底层Class.getMethod()方法的一个给定要求,它只能在文档声明它时找到公共方法
返回一个
Method对象,该对象反映此Class对象表示的类或接口的指定公共成员方法.
那么,这种实现根本不适用于某些设备和模拟器的可能性如何呢?虽然它对使用相同API级别的其他设备不起作用?
我调试了特定的实现。代码的相关部分位于支持库中,使用Class.getMethod().
如文档中所述,此方法仅查找公共成员方法并且行为正确。由于某种原因,声明的受保护方法的所有修饰符Activity(这些是onCreate()和doClick())都设置为1,这意味着这些实际上是公共的。
我只能观察到debug使用 Mac 创建构建的这种行为。因此,为什么会发生这种情况仍然是一个悬而未决的问题,我正在努力寻找答案。
| 归档时间: |
|
| 查看次数: |
654 次 |
| 最近记录: |