我正在用Xamarin.Android和MvvmCross编写一个应用程序。我希望我的Activity
从MvxAppCompatActivity
继承,以便我可以使用碎片。这是我的基类:
public class BaseActivity<TViewModel> : MvxAppCompatActivity<TViewModel> where TViewModel : MvxViewModel
{
public new TViewModel ViewModel
{
get { return base.ViewModel; }
set { base.ViewModel = value; }
}
}
我在OnCreate
的Activity
上得到了这个错误:
解决方案失败:Landroid / support / v7 / appcompat / R $ drawable;在路径上找不到类“android.support.v7.appcompat.R $ drawable”:DexPathList ...
但是,如果我将MvxAppCompatActivity
改为MvxActivity
,它的工作正常......为什么?
我下载了您的解决方案,并尝试构建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.xml
,input_box.xml
和login_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)没有必要,但为了以防万一而留在这里。
它可能是几件事,但可能是缺少一些Android支持包。主要是缺乏Xamarin.Android.Support.Design
给出了这个错误。因此,请检查您是否已添加,如果没有添加它,它应该解决您的问题。如果不是,你很可能缺少其他一些Android支持包