使用 MvxAppCompatActivity 时出错
Error when using MvxAppCompatActivity
我正在用 Xamarin.Android 和 MvvmCross 编写应用程序。我希望我的 Activity
继承自 MvxAppCompatActivity
以便我可以使用片段。这是我的基地 class:
public class BaseActivity<TViewModel> : MvxAppCompatActivity<TViewModel> where TViewModel : MvxViewModel
{
public new TViewModel ViewModel
{
get { return base.ViewModel; }
set { base.ViewModel = value; }
}
}
我在 Activity
的 OnCreate
上收到此错误:
Failed resolution of: Landroid/support/v7/appcompat/R$drawable; Didn't
find class "android.support.v7.appcompat.R$drawable" on path:
DexPathList...
但是如果我将 MvxAppCompatActivity
更改为 MvxActivity
它工作正常...为什么?
可能有多种原因,但可能是缺少某些 android 支持包。主要是缺少 Xamarin.Android.Support.Design
会导致该错误。因此,请检查您是否添加了它,如果没有添加它,它应该可以解决您的问题。
如果不是,则很可能您缺少其他一些 android 支持包
我下载了您的解决方案并尝试构建 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
class 继承自 MvxAppCompatSetup
.
4) 在 LoginButton
控件上添加了 RegisterAttribute
。所以 class 定义看起来像这样:
using Android.Runtime;
...
namespace Xxx.Droid.Components
{
[Register(nameof(LoginButton))]
public class LoginButton : FrameLayout, IMvxNotifyPropertyChanged
{
...
}
}
就是这样!可能 (2) 不是必需的,但以防万一。
我正在用 Xamarin.Android 和 MvvmCross 编写应用程序。我希望我的 Activity
继承自 MvxAppCompatActivity
以便我可以使用片段。这是我的基地 class:
public class BaseActivity<TViewModel> : MvxAppCompatActivity<TViewModel> where TViewModel : MvxViewModel
{
public new TViewModel ViewModel
{
get { return base.ViewModel; }
set { base.ViewModel = value; }
}
}
我在 Activity
的 OnCreate
上收到此错误:
Failed resolution of: Landroid/support/v7/appcompat/R$drawable; Didn't find class "android.support.v7.appcompat.R$drawable" on path: DexPathList...
但是如果我将 MvxAppCompatActivity
更改为 MvxActivity
它工作正常...为什么?
可能有多种原因,但可能是缺少某些 android 支持包。主要是缺少 Xamarin.Android.Support.Design
会导致该错误。因此,请检查您是否添加了它,如果没有添加它,它应该可以解决您的问题。
如果不是,则很可能您缺少其他一些 android 支持包
我下载了您的解决方案并尝试构建 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
class 继承自 MvxAppCompatSetup
.
4) 在 LoginButton
控件上添加了 RegisterAttribute
。所以 class 定义看起来像这样:
using Android.Runtime;
...
namespace Xxx.Droid.Components
{
[Register(nameof(LoginButton))]
public class LoginButton : FrameLayout, IMvxNotifyPropertyChanged
{
...
}
}
就是这样!可能 (2) 不是必需的,但以防万一。