:Android的 - 内存泄漏与弹出窗口中Recyclerview
“E /窗口管理器:android.view.WindowLeaked:活动com.awt.myapp.MyList有泄露的窗口android.widget.PopupWindow $ PopupDecorView {84fdb1f VE ..... ....... D 0,0-369,120}原来在这里添加...“
基本上我有一个recyclerview和适配器中,我在每行中都有一堆文本视图,并且绑定时单击它们的监听器,因为单击其中一个文本视图会弹出一个窗口。问题是,如果我在弹出窗口仍然可见时点击Android后退按钮,则会出现上述错误。
我明白,在我的活动,持有recyclerview我可以添加一个“onBackPressed()”方法,但在这里我不知道如何获取适配器内任何弹出窗口的引用(和关闭它在这个阶段),因为我相信这是我需要做的。
下面是我的点击监听器的代码,我曾与一些选项尝试和具有setFocusable只是导致后退按钮停止工作,所以不知道这是必要的。
tv.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View moreInfoView) {
myPopupWindow.setBackgroundDrawable(new ColorDrawable());
//myPopupWindow.setFocusable(true);
myPopupWindow.setTouchable(false); // Ignores taps
myPopupWindow.setOutsideTouchable(true); // Disappear when tapping anywhere on screen
int position = -tv.getHeight();
myPopupWindow.showAsDropDown(tv, 0, position);
((MyList) context).onToggleMoreInfo("show");
myPopupWindow.setOnDismissListener(new PopupWindow.OnDismissListener() {
@Override
public void onDismiss() {
((MyList) context).onToggleMoreInfo("hide");
}
});
}
});
希望这是有道理的,如果你需要更多的信息让我知道。任何意见,将不胜感激。
好了,去研究如何去这样做,可能会回来了疑问:d感谢。 – Loop77