使用MvxAppCompatActivity时出错

问题描述 投票:0回答:2

我正在用Xamarin.Android和MvvmCross编写一个应用程序。我希望我的ActivityMvxAppCompatActivity继承,以便我可以使用碎片。这是我的基类:

public class BaseActivity<TViewModel> : MvxAppCompatActivity<TViewModel> where TViewModel : MvxViewModel
{
    public new TViewModel ViewModel
    {
        get { return base.ViewModel; }
        set { base.ViewModel = value; }
    }
}

我在OnCreateActivity上得到了这个错误:

解决方案失败:Landroid / support / v7 / appcompat / R $ drawable;在路径上找不到类“android.support.v7.appcompat.R $ drawable”:DexPathList ...

但是,如果我将MvxAppCompatActivity改为MvxActivity,它的工作正常......为什么?

xamarin.android mvvmcross appcompatactivity
2个回答
4
投票

我下载了您的解决方案,并尝试构建Android项目。它失败了18次出现同样的错误:

error: No resource identifier found for attribute 'loginButtonBackgroundColor' in package ...

因此,在对您的解决方案进行一些检查后,我执行了以下步骤来解决您的问题:

1)在login_screen.axml,我看到你有这条线:

xmlns:[YOURNAMESPACE]="http://schemas.android.com/apk/res/[YOUR PACKAGE]"

这是不必要的。删除它,并将行[YOURNAMESPACE]:loginButtonBackgroundColor=...更改为local:loginButtonBackgroundColor=...后,构建成功。

2)我看到一些布局文件位于/drawable文件夹(button_round_corner.xmlinput_box.xmllogin_button.xml)内。我将它们移动到/layout文件夹并修复了所产生的更改问题(仅限两个)。

3)使Setup类继承自MvxAppCompatSetup

4)在RegisterAttribute对照上添加了LoginButton。所以类定义看起来像这样:

using Android.Runtime;
...

namespace Xxx.Droid.Components
{
    [Register(nameof(LoginButton))]
    public class LoginButton : FrameLayout, IMvxNotifyPropertyChanged
    {
        ...
    }
}

就是这样!可能(2)没有必要,但为了以防万一而留在这里。


1
投票

它可能是几件事,但可能是缺少一些Android支持包。主要是缺乏Xamarin.Android.Support.Design给出了这个错误。因此,请检查您是否已添加,如果没有添加它,它应该解决您的问题。如果不是,你很可能缺少其他一些Android支持包

© www.soinside.com 2019 - 2024. All rights reserved.