【发布时间】:2017-10-25 19:58:05
【问题描述】:
我正在尝试创建一个使用 Catel 4.5.4 的示例 Xamarin.Android C# 应用程序。 它由一个活动、视图模型类和一个应用程序类组成。 (代码在最后)
当我运行它时,我收到以下错误:
10-23 13:41:04.890 I/MonoDroid(8769):System.NotSupportedException:无法将 Java 类型“md5b251e24e9fff919bf177c55c6e30cd8e/MainActivity”的 JNI 句柄 0x6ec00025(key_handle 0x41ed37d8)激活为托管类型“MainTest.Views”。 . ---> System.NotSupportedException:为了支持 Android 中的导航事件,Catel 使用了自定义的 ActivityLifecycleCallbacksListener。不过,这需要一个应用程序实例。请确保 Android 应用包含 Application 类。
完整的调试日志: https://pastebin.com/UZHhVHfL
错误似乎来自Catel源代码中的这一行:
var activity = GetNavigationTarget<Activity>();
var application = activity.Application;
if (application == null)
{
const string error = "To support navigation events in Android, Catel uses a custom ActivityLifecycleCallbacksListener. This requires an app instance though. Please make sure that the Android app contains an Application class.";
Log.Error(error);
-->throw new NotSupportedException(error);
这里的activity.Application 为空。我该如何解决这个问题?
我已尝试使用以下 Catel 版本的代码:
4.1.0 - 代码工作
4.2.0 - 代码工作
4.5.0 - 代码工作
4.5.1 - 错误
4.5.4 - 错误
我必须使用 4.5.4,因为修复此问题后,我想将现有的 WPF+Catel(4.5.4) Windows 应用程序移植到 Android。
以下是代码的相关部分:
Views/MainActivity.cs
using Android.App;
using Android.OS;
using Android.Util;
namespace Test.Views
{
[Activity(Label = "Test", MainLauncher = true, Icon = "@drawable/icon")]
public class MainActivity : Catel.Android.App.Activity
{
protected override void OnCreate(Bundle bundle)
{
Log.Debug("MainActivity", "Activity onCreate Called");
base.OnCreate(bundle);
// Set our view from the "main" layout resource
SetContentView(Resource.Layout.Main);
}
}
}
MyApp.cs
由于错误,我创建了这个类,但它没有解决问题。我应该在构造函数中添加任何东西吗?或者覆盖任何其他函数?
using System;
using Android.App;
using Android.Runtime;
using Android.Util;
namespace Test
{
[Application(Debuggable = true, Label = "Test App")]
class MyApp : Catel.Android.App.Application
{
public MyApp(IntPtr javaReference, JniHandleOwnership transfer) : base(javaReference, transfer)
{
}
public override void OnCreate()
{
base.OnCreate();
Log.Error("MyApp", "Application onCreate Called");
}
}
}
【问题讨论】:
标签: xamarin.android catel