我创建了一个服务接口:
public interface IMessageDialogService
{
void ShowDialog(object context,string title,string message,string buttonTitle);
}
我已在Android和iOS上实现了该界面。上下文仅用于Android,其中需要Android上下文来显示消息对话框。我将此接口传递给我的ViewModel,由IoC注入。我的问题是在我的平台独立的ViewModel中,它调用WebService然后处理返回值。它检查错误条件的返回值,并需要显示消息对话框。 iOS不需要任何上下文来显示UIAlertView,但是在Android上我如何获得一个Android上下文作为第一个参数传入?
是否有更简单的方法从ViewModel显示简单的信息对话框?
答案 0 :(得分:18)
在检查WebBrowserTask的源代码后,看起来我总能通过以下方式获取当前的Activity:
var activity = Mvx.Resolve<IMvxAndroidCurrentTopActivity> ().Activity;
所以我不必将其传递下去,但是我在Android上实现了IMessageDialogService并抓住它并使用它来显示消息对话框。