我想阻止用户在将视图更改为另一个视图时将在EditView中丢失其更改。
我在我的项目中使用MVP4G,项目被分为mvp的结构(模板的一个包另一个用于视图..)是否有任何解决方案来检测eventBus中的EditView。或检测显示给用户的当前视图
提前致谢
答案 0 :(得分:0)
由于mvp4g中的导航事件功能,演示者将在视图更改之前获得控制权。此时,演示者可以决定是否完成导航。这是mvp4g应用程序中保存数据的正确位置。
首先,zu必须在eventbus中标记所有将改变您的视图的事件:
@Event(..., navigationEvent = true)
void goToPage1();
接下来,您的演示者必须实现NavigationConfirmationInterface和require confirm-method:
public class Presenter extends ... implements NavigationConfirmationInterface {
public void confirm(NavigationEventCommand event) {
//pseudo method to verify if the view has changed
if (isViewModified(){
//Window shouldn't be used inside a presenter
//this is just to give a simple example
if (Window.confirm("Are you sure you want to leave?")){
event.fireEvent();
}
} else {
event.fireEvent();
}
}
}
最后要做的是通过调用将当前视图的演示者设置为确认演示者:
event.fireEvent(false);
这通常在演示者获得控制权时完成。
您可以在此处找到文档:
https://github.com/FrankHossfeld/mvp4g/wiki/03.-Defining-EventBus#navigation-event
答案 1 :(得分:0)
感谢MVP4G的团队,包括 El Hoss ,他给了我一个检查MVP4G博客的提示..我已经通过这个例子解决了我的问题 http://mvp4g.blogspot.com/2011/06/navigation-control.html