Tôi đang cố gắng để tạo ra một giải pháp gọn gàng cho tình huống sau đây:Xamarin MvvmCross Android Ngăn chặn Nút Quay lại trở về trước Xem
tôi đã xây dựng một ứng dụng mà đòi hỏi phải có chứng chỉ để xác thực người dùng. Bất cứ khi nào API muốn xác thực lại người dùng, tôi muốn buộc người dùng quay lại chế độ xem đăng nhập. Chức năng này hoạt động tốt, nhưng khi người dùng nhấn nút quay lại trên thiết bị, chế độ xem trước đó sẽ hiển thị. Tôi muốn thấy rằng khi người dùng nhấn nút quay lại, ứng dụng sẽ thoát.
MvvmCross có tùy chọn sử dụng MvxPresentationHint. Tôi đã tạo CustomAndroidViewPresenter và tạo MvxAndroidSetup sau:
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;
}
}
Tôi biết rằng bạn nên gọi đến Finish(); trên một hoạt động để ngăn backbutton điều hướng trở lại chế độ xem chưa được xác thực. Nhưng truyền applicationContext để ném một ngoại lệ.
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ó ai có ý tưởng nào về cách đạt được điều này không?
Rất cám ơn trước.
Cảm ơn bạn đã trả lời! Tôi sẽ xem xét và cung cấp phản hồi của tôi – JonHendrix
Nó đã hoạt động! Đánh dấu là câu trả lời - Cảm ơn! – JonHendrix