gpt4 book ai didi

Android SDK 在 android.widget.PopupWindow$1.onScrollChanged(PopupWindow.java :132)

转载 作者:太空宇宙 更新时间:2023-11-03 10:51:24 26 4
gpt4 key购买 nike

谷歌开发团队的人能解释一下如何避免在 pre-ics 设备上发生这种崩溃吗?在我的例子中,ListView 项目上的 ImageButton 是 PopupWindow 的 anchor ,用于创建下拉菜单。我已经尝试了 popup.dismiss() 、popup= null 等所有方法,但似乎没有什么能阻止适配器重置时出现问题。

我收到以下异常:

 FATAL EXCEPTION: main
java.lang.NullPointerException
at android.widget.PopupWindow$1.onScrollChanged(PopupWindow.java:132)
05-21 17:02:27.736: E/AndroidRuntime(25836): at
android.view.ViewTreeObserver.dispatchOnScrollChanged(ViewTreeObserver.java:607)

此弹出窗口位于列表项上。从 ListView 中删除最后一个列表项后,我会重置 Adapter 以设置页脚。然后当我离开屏幕时会发生此错误。

不在 Ice Cream Sandwich 中: Ice Cream Sandwich 。参见 https://android.googlesource.com/platform/frameworks/base/+/749b0eb2c9a52bb188fd8900859b3725889e0ec0%5E!/

这建议修复与 PopupWindow 的空 anchor 相关的问题。可以做什么?在我的例子中,ListView 项目中的一个按钮是弹出窗口的 anchor 。同样的问题在这里:

https://github.com/JakeWharton/ActionBarSherlock/issues/487

最佳答案

不确定 OP 是否仍然需要这个,因为半年后我才看到这个..

这在 ICS 中已修复。但是,您可以通过反射分配一个固定的滚动监听器!

if(Build.VERSION.SDK_INT<Build.VERSION_CODES.ICE_CREAM_SANDWICH){
try {
final Field fAnchor = PopupWindow.class.getDeclaredField("mAnchor");
fAnchor.setAccessible(true);
Field listener = PopupWindow.class.getDeclaredField("mOnScrollChangedListener");
listener.setAccessible(true);
final ViewTreeObserver.OnScrollChangedListener originalListener = (ViewTreeObserver.OnScrollChangedListener) listener.get(window);
ViewTreeObserver.OnScrollChangedListener newListener=
new ViewTreeObserver.OnScrollChangedListener() {
public void onScrollChanged() {
try {
// PopupWindow implementation has WeakReference<View>
WeakReference<View> mAnchor = (WeakReference<View>) fAnchor.get(window);
if (mAnchor == null || mAnchor.get() == null) {
return;
} else {
originalListener.onScrollChanged();
}
} catch (Exception e) {
e.printStackTrace();
}
}
};
listener.set(window,newListener);
} catch (Exception e) {
e.printStackTrace();
}
}

关于Android SDK 在 android.widget.PopupWindow$1.onScrollChanged(PopupWindow.java :132),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12793784/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com