贴一段代码 Support 版本导致的
private void updateNestedScrollingChild(V child) throws Exception {
Field ref = BottomSheetBehavior.class.getDeclaredField("nestedScrollingChildRef");
ref.setAccessible(true);
ref.set(this, new WeakReference<>(findScrollingChild(child)));
}
/**
* 重置可滚动的child,如果根view中方的是viewpager,page切换时必须调用此方法
*/
public void invalidateScrollingChild() {
try {
Field ref = BottomSheetBehavior.class.getDeclaredField("viewRef");
ref.setAccessible(true);
WeakReference<View> viewRef = (WeakReference<View>) ref.get(this);
final View scrollingChild = findScrollingChild(viewRef.get());
updateNestedScrollingChild((V) scrollingChild);
} catch (Exception e) {
e.printStackTrace();
}
}
由于风格习惯,猜测,一般成员变量最老的程序员习惯比较好。mXXXX
但是后来可能是风格问题,改成xxxx。所以反射找不到字段。不容易注意
我的代码,不一定对,具体针对Support版本看,具体的要兼容适配吧
希望给大家类似问题bug解决有帮助
PS: 终于理解大神说反射是个双刃剑
网友评论