Xamarin.android 使用MvxAppCompatActivity时出错

Xamarin.android 使用MvxAppCompatActivity时出错,xamarin.android,mvvmcross,appcompatactivity,Xamarin.android,Mvvmcross,Appcompatactivity,我正在用Xamarin.Android和MvvmCross编写一个应用程序。我希望我的活动继承自MvxAppCompatActivity,以便使用片段。这是我的基本类: public class BaseActivity<TViewModel> : MvxAppCompatActivity<TViewModel> where TViewModel : MvxViewModel { public new TViewModel ViewModel {

我正在用Xamarin.Android和MvvmCross编写一个应用程序。我希望我的
活动
继承自
MvxAppCompatActivity
,以便使用片段。这是我的基本类:

public class BaseActivity<TViewModel> : MvxAppCompatActivity<TViewModel> where TViewModel : MvxViewModel
{
    public new TViewModel ViewModel
    {
        get { return base.ViewModel; }
        set { base.ViewModel = value; }
    }
}
公共类BaseActivity:MVXAppCompativity其中TViewModel:MvxViewModel
{
公共新TViewModel ViewModel
{
获取{return base.ViewModel;}
设置{base.ViewModel=value;}
}
}
我在我的
活动的
OnCreate
中遇到此错误:

未能解决以下问题:Landroid/support/v7/appcompat/R$drawable;没有 在路径上找到类“android.support.v7.appcompat.R$drawable”: 路径列表


但是如果我将
MvxAppCompatActivity
改为
MvxActivity
,效果会很好……为什么呢?

可能有很多原因,但可能是缺少一些android支持包。主要是缺少
Xamarin.Android.Support.Design
导致了这个错误。所以,检查你是否已经添加了它,如果没有添加它,它应该可以解决你的问题。
如果没有,很可能您缺少其他一些android支持包

,这可能是几件事,但可能是缺少一些android支持包。主要是缺少
Xamarin.Android.Support.Design
导致了这个错误。所以,检查你是否已经添加了它,如果没有添加它,它应该可以解决你的问题。
如果没有,很可能您缺少其他一些android支持包

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

错误:在包中找不到属性“loginButtonBackgroundColor”的资源标识符…

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

1) 在
login\u screen.axml中,我看到您有这样一行:

xmlns:[YOURNAMESPACE]=”http://schemas.android.com/apk/res/[您的套餐]“

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

2) 我看到一些布局文件位于
/drawable
文件夹中(
button\u round\u corner.xml
input\u box.xml
login\u button.xml
)。我将它们移动到
/layout
文件夹,并修复了更改产生的问题(只有两个)

3) 使
Setup
类继承自
MvxAppCompatSetup


4) 在
LoginButton
控件上添加了一个
RegisterAttribute
。因此,类定义如下所示:

using Android.Runtime;
...

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

就这样!可能(2)是不必要的,但把它留在这里以防万一。

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

错误:在包中找不到属性“loginButtonBackgroundColor”的资源标识符…

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

1) 在
login\u screen.axml中,我看到您有这样一行:

xmlns:[YOURNAMESPACE]=”http://schemas.android.com/apk/res/[您的套餐]“

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

2) 我看到一些布局文件位于
/drawable
文件夹中(
button\u round\u corner.xml
input\u box.xml
login\u button.xml
)。我将它们移动到
/layout
文件夹,并修复了更改产生的问题(只有两个)

3) 使
Setup
类继承自
MvxAppCompatSetup


4) 在
LoginButton
控件上添加了一个
RegisterAttribute
。因此,类定义如下所示:

using Android.Runtime;
...

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


就这样!可能(2)是不必要的,但把它留在这里以防万一。

我有
Xamarin.Android.Support.Design
26.1.0.1版,我尝试添加了一堆支持包,但没有任何效果,尽管我遗漏了一些东西是有意义的。所有的包都在同一个版本中吗?所有的Xamarin.Android.Support.*是的,这是wierd,你是否尝试过删除bin和obj文件夹并在之后重建?是的,我尝试过我有
Xamarin.Android.Support.Design
26.1.0.1版,我尝试过添加一堆支持包,但没有任何效果,虽然我遗漏了一些东西是有意义的,但您是否拥有相同版本的所有软件包?所有的Xamarin.Android.Support.*是的,这是wierd,您是否尝试过删除bin和obj文件夹并在之后重建?是的,我尝试过,您的项目目标版本和min版本是什么?min版本是API级别15,目标是API级别26(在自动设置上,以获取最新信息)你介意分享一个可以通过在线回购重现问题的基本演示吗?@Darius你提供的示例,它是否会在启动后产生你发布的错误?我可以毫无问题地启动应用程序并四处导航。请注意你的
设置。cs
正在继承
MvxAndroidSetup
你需要将其更改为MvxAppCompatSetup
(它使用
MvxAppCompatViewPresenter
)以使用compat视图类型。我还应该提到我必须更改命名空间
xmlns:azzimovmobile=”http://schemas.android.com/apk/res/com.azzimov.azzimovmobile"
因为我无法编译项目。您的项目目标版本和最低版本是什么?最低版本是API级别15,目标是API 26(自动设置为最新版本)你介意分享一个可以通过在线回购重现问题的基本演示吗?@Darius你提供的示例,它会产生你在发布后发布的错误吗?我可以在没有我的情况下发布应用程序