我有一个以singleTask模式启动的活动(比如A)。我在此活动中创建了一个弹出窗口,并将其添加到活动A的父视图中。现在我从其他地方启动了活动A,我收到onNewIntent()调用,在那里我重新初始化了新视图。但是,在重新初始化A之前,如何销毁此弹出窗口?
这是我的代码: 这就是我创建弹出窗口的方式。
final ViewGroup rootView = (ViewGroup) getWindow().getDecorView().getRootView();
RelativeLayout popup = (RelativeLayout) LayoutInflater.from(this).inflate(R.layout.popup_r,null);
popupView = popup;
rootView.addView(popup);
这是我的onNewIntent方法
@Override
protected void onNewIntent(Intent intent) {
super.onNewIntent(intent);
if (popupView != null)
{
((ViewGroup)popupView.getParent()).removeView(popupView);
popupView = null;
}
setIntent(intent);
setContentView(R.layout.activity_view);
reinitView();
}
但是这让我崩溃了,这里是logcat:
java.lang.NullPointerException:尝试写入字段' android.view.ViewParent android.view.View.mParent'在空对象引用上
在第((ViewGroup)popupView.getParent()).removeView(popupView);
行
如何在使用新意图重新初始化活动之前删除popupview?