【问题标题】:How to use MVVMCross in a Blank Android App如何在空白的 Android 应用程序中使用 MVVMCross
【发布时间】:2016-07-19 23:53:49
【问题描述】:

如何在“Blank Android App”中实现 MVVMCross 没有可移植类库 (PCL) 是否可以做到这一点?

我是否必须创建一个 App.cs 类(该项目不包括在内),这甚至可能吗?

如果我必须这样做,我该怎么做?

【问题讨论】:

  • 您是否尝试过阅读文档? mvvmcross.com/docs/getting-started
  • @Jason,我已尝试阅读文档,但它们适用于具有 PCL 的 xamarin 应用程序,我想在没有 PCL 的情况下使用 MVVMCross。

标签: android xamarin configuration xamarin.android mvvmcross


【解决方案1】:

TipCalc-Tutorial 是一个很好的入门示例,您可以在官方 github 页面 (https://github.com/MvvmCross/MvvmCross/wiki) 上找到它,但要小心,因为大多数教程都是针对 4.0 的,所以可能会有一些变化。例如:

当要求选择平台时,选择 .NET Framework 4.5、Windows 8、 Windows Phone Silverlight 8、Windows Phone 8.1、Xamarin.Android 和 Xamarin.iOS - 这将确保 PCL 在 Profile259 中。

已过时,因为从 MVVMCross 4.2.2 开始不再支持 Silverlight。因此,您应该使用 Profile 7 作为示例。有关 PCL 配置文件的更多信息,请点击此处:http://danrigby.com/2014/05/14/supported-pcl-profiles-xamarin-for-visual-studio-2/

但是是的,您基本上应该有一个可移植类库,即使没有它也可以工作。它只是提供了许多优点,而无需付出太多努力。

你不需要一个“App.cs”,但你需要一个继承自 MvxApplication 的类。所以坚持这个名字可能更容易,因为每个人都知道它的用途。

不过先看看教程吧,里面的东西都应该解释清楚了。

【讨论】:

  • 嘿 @Cyriac 感谢教程的链接,它们非常好,但是您实际上可以在没有 PCL 的情况下使用 MVVMCross,请参阅答案。
  • 是的,我猜它可能会起作用,但如果没有它,仍然不会错过它的优势。但可能取决于项目的选择。但很高兴知道它确实有效!
  • 是的,这是项目要求
【解决方案2】:

在做了一些研究后,我发现您可以在“空白 Android 应用”中创建一个 App.cs 文件(即扩展 Android.App.Application 类的类),因此不需要 PCL 即可使用 MVVMCross。

你必须确保你有一个 public App(IntPtr javaReference, JniHandleOwnership transfer) 构造函数的实现,并且有些人说你还需要重写 OnCreate 方法(就像我所做的那样)。

还要确保在您的 AssemblyInfo.cs 文件中没有任何 [Application] 行,即。这些都不是:[assembly: Application(Debuggable = true)]

参见下面的代码。

using Android.App;
using Android.Runtime;
using System;

namespace YOUR.NAMESPACE
{
#if DEBUG
    [Application(Debuggable = true)]
#else
    [Application(Debuggable = false)]
#endif
    public class App : Application
    {
        public App(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
        {
            //Do MVVMCross setup Here
            //Mvx.RegisterType<ICalculation,Calculation>();
            //Mvx.RegisterSingleton<IMvxAppStart>(new MvxAppStart<TipViewModel>());
        }
        public override void OnCreate()
        {
            base.OnCreate();
        }
    }
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-01-14
    相关资源
    最近更新 更多