Java GWT:SuggestionBox作为全局变量

Java GWT:SuggestionBox作为全局变量,java,gwt,suggestbox,Java,Gwt,Suggestbox,我有一个具有2个视图和2个演示者的应用程序。我有一个固定的顶部菜单,带有使用SuggestionBox的搜索框。我从数据库中获取建议列表,并使用addAll(..)方法将其加载到SuggestionBox的MultiwordSuggestionOracle中 我正在使用UiBinder,这是我的代码: @UiField(提供=true)SuggestBox搜索中心SuggestBox; 多字提示甲骨文; 公共菜单栏(){ oracle=新的MultiWordSuggestOracle(); Se

我有一个具有2个视图和2个演示者的应用程序。我有一个固定的顶部菜单,带有使用SuggestionBox的搜索框。我从数据库中获取建议列表,并使用addAll(..)方法将其加载到SuggestionBox的MultiwordSuggestionOracle中

我正在使用UiBinder,这是我的代码:

@UiField(提供=true)SuggestBox搜索中心SuggestBox;
多字提示甲骨文;
公共菜单栏(){
oracle=新的MultiWordSuggestOracle();
SearchEntriessSuggestBox=新的SuggestBox(oracle);
initWidget(uiBinder.createAndBindUi(this));
}
公共void loadUserEntries(集合条目){
oracle.clear();
oracle.addAll(条目);
}
第一次运行应用程序时,我使用loadUserEntries()加载建议。问题是当我更改视图(和演示者)时,因为SuggestBox会加载一个空的MultiWordSuggestOracle,所以每次更改演示者时,我都必须再次加载建议

我希望在应用程序的生命周期中将建议(MultiWordSuggestOracle)作为全局变量进行维护,以避免使用loadUserEntries方法

我尝试定义一个全局变量MultiWordSuggestOracle,每次我必须加载演示者时,用我的全局MultiWordSuggestOracle创建一个新的SuggestBox。但它不起作用

有什么想法吗


谢谢。

问题是每个视图都使用自己的菜单栏实例,因为每个视图都创建自己的菜单栏

有不同的方法可以解决您的问题,您可以使用多个
ActivityManager
,如本文所述,或者您可以在UI中有一个固定的部分,菜单栏不在MVP显示中,或者一个简单的解决方案是使用静态变量并使load方法保持静态(只调用此方法一次)

@UiField(提供=true)SuggestBox搜索中心SuggestBox;
静态MultiWordSuggestOracle oracle=null;
公共菜单栏(){
if(oracle==null){
oracle=新的MultiWordSuggestOracle();
}
SearchEntriessSuggestBox=新的SuggestBox(oracle);
initWidget(uiBinder.createAndBindUi(this));
}
公共静态void loadUserEntries(集合项){
oracle.clear();
oracle.addAll(条目);
}

谢谢。这对我帮助很大。我第一次添加了一个全局变量来加载SuggestBox。