我正试图找到一种从堆栈中删除活动的方法 - 我们的应用程序中有一个流程:activity / viewmodel a - > activity / viewmodel b - > activity / viewmodel c。在c中,用户可以选择日期或返回。如果他回去,他应该回到b。但是,如果他选择了一个日期,那么他将被发送到一个新的activity / viewmodel b实例,而“old”的activity / viewmodel b实例已经过时,应该删除。
Stuart Lodge的建议(在类似的线程上,仅用于单声道触摸)是使用RequestRemoveBackStep(),但我不知道如何使用它,我无法找到一个例子。
有人能指出我正确的方向吗?
此致
答案 0 :(得分:1)
RequestRemoveBackStep()
方法是IMvxViewDispatcher
接口的成员,并在某些平台上实现:
public interface IMvxViewDispatcher : IMvxMainThreadDispatcher
{
bool RequestNavigate(MvxShowViewModelRequest request);
bool RequestClose(IMvxViewModel whichViewModel);
bool RequestRemoveBackStep();
}
然而,总是这样做并不简单......例如,在Droid上,它目前实现为:
public bool RequestRemoveBackStep()
{
// not supported on Android? Not sure how to do this currently...
return false;
}
有关于此功能的问题已记录 - 例如https://github.com/slodge/MvvmCross/issues/80 - 但似乎可能只是从未来的Mvx实现中删除此功能 - 特别是因为对每个平台上的每个视图都不是很容易做到。
如果您现在需要此类功能,那么您需要找到自己实现此功能的方式......具体取决于您的具体用例(抱歉 - 您当前用例的详细信息不是从问题中我明白了。)
有几种技术路线可供选择,包括:
NoHistory
标志RequestClose(oldviewModel)
来电Presenter
Messenger
请求关闭自己的视图。