我正在将应用程序从WinCE移植到Android。 此应用使用MVP模式。
最主要的事情之一是ViewProvider(活动提供程序),它保存所有活动(实例)并可以返回您需要的活动(对于状态机非常有用)。
public List<IView> Views { get; protected set; }
public virtual void Init()
{
Views.Add(new MasterView());
Views.Add(new LoginView());
Views.Add(new MainMenuView());
}
public T GetView<T>() where T : InView
{
return (T)Views.FirstOrDefault(view => view is T);
}
所有这些视图都继承了位于类库中的继承的基本活动。 例如:
[Activity(Label = "MasterView")]
public class MasterView : BaseView, IMasterView
{
protected override void OnCreate(Bundle savedInstanceState)
{
base.OnCreate(savedInstanceState);
// Create your application here
}
}
public class BaseView : Activity, IView //is in class library project
{
protected override void OnCreate(Bundle bundle)
{
base.OnCreate(bundle);
SetContentView(Resource.Layout.baseview);
}
}
因此,当Init方法开始添加新的MasterView时,我会收到错误消息“ Java.Lang.RuntimeException:无法在未调用Looper.prepare()的线程内创建处理程序” >
我应该如何创建此活动列表以在需要时进行一些活动?还是Xamarin Android上非常糟糕的做法? 预先感谢!