我有以下课程,用于根据用户选择的菜单项管理我显示的内容。我有一个问题,它没有删除以前的小部件。我已经使用getWidgetIndex检查了Panel中存在的小部件,我尝试使用对象和索引删除小部件但没有成功。
当我尝试删除时,我得到一个例外,下面也包含了这个例外。想法?
public class BaseContentHandler implements ClickHandler{
private Content item;
public BaseContentHandler(Content content){
this.item = content;
}
@Override
public void onClick(ClickEvent event) {
if(currentWidget != null){
contentPanel.remove(contentPanel.getWidgetIndex(currentWidget)/*currentWidget*/);
}
currentWidget = this.item;
contentPanel.add(this.item);
}
}
异常:(TypeError):d为null stack:Bwb
也欢迎其他建议。
詹姆斯
答案 0 :(得分:0)
最好在currentWidget上使用.hide(),在this.item上使用.show(),将它们全部保留在面板中,而不是动态插入和删除它们。
答案 1 :(得分:0)
您发布的代码段中缺少某些内容 - 在哪里定义了contentPanel?
我想NPE的唯一可能点是这一行: contentPanel.remove(contentPanel.getWidgetIndex(currentWidget)/ currentWidget /);
您所描述的异常似乎来自javascript工具,因为“d”是GWT编译后的javascript对象。要从javascript级别获取更详细的信息,您应该在详细模式下编译GWT项目: