在弹出窗口中使用 getActivity() 对象的时候,有可能会出现上下文失效的问题,因为弹出窗口的生命周期和活动的生命周期是不同步的。所以需要采取一些措施来避免这个问题。
一种解决方法是使用 getApplicationContext() 方法获取上下文对象,而不是 getActivity() 方法获取上下文对象,这样弹出窗口就会使用应用程序上下文,而不用活动上下文。
示例代码如下:
public class MyPopupWindow extends PopupWindow {
private Context mContext;
public MyPopupWindow(Context context) {
super(context);
this.mContext = context.getApplicationContext();
}
//...
}
这里将传入的上下文对象 context 转换为了应用程序上下文对象 mContext,并在构造函数中进行初始化。这样,在弹出窗口中使用 mContext 获取上下文对象就能避免上下文失效的问题了。