: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