【发布时间】:2015-03-12 08:23:54
【问题描述】:
我正在尝试为以下情况创建一个简洁的解决方案:
我已经构建了一个需要凭据来验证用户身份的应用。每当 API 想要重新验证用户身份时,我想强制用户返回登录视图。此功能效果很好,但是当用户按下设备上的后退按钮时,会显示上一个视图。我希望看到当用户按下后退按钮时应用程序退出。
MvvmCross 可以选择使用MvxPresentationHint。我创建了一个 CustomAndroidViewPresenter 并创建了以下 MvxAndroidSetup:
public class Setup : MvxAndroidSetup
{
private CustomAndroidViewPresenter _presenter;
public Setup(Context applicationContext)
: base(applicationContext)
{
_presenter = new CustomAndroidViewPresenter(applicationContext);
}
protected override IMvxAndroidViewPresenter CreateViewPresenter()
{
Mvx.RegisterSingleton(_presenter);
return _presenter;
}
}
我知道你应该调用 Finish();在一个活动上,以防止后退按钮导航回未经身份验证的视图。但是将 applicationContext 强制转换为抛出异常。
public CustomAndroidViewPresenter(Context context)
{
_context = context;
}
public override void ChangePresentation(MvxPresentationHint hint)
{
if (hint is LoginOnlyBackStackHint)
{
var context = Application.Context;
if (context is Activity)
{
// Context is NOT activity
}
try
{
Activity x = (Activity) context;
x.Finish();
// Exception is thrown
}
catch (Exception ex)
{
}
}
base.ChangePresentation(hint);
}
有人知道如何实现这一目标吗?
非常感谢。
【问题讨论】:
标签: c# android xamarin mvvmcross