Catel 4.5.4를 사용하는 샘플 Xamarin.Android C# 응용 프로그램을 만들려고합니다. 활동,보기 모델 클래스 및 응용 프로그램 클래스로 구성됩니다. (끝 코드)Catam 4.5.4 Xamarin.Android - 오류 - System.NotSupportedException : JNI 핸들을 활성화 할 수 없습니다.
내가 그것을 실행하면, 나는 다음과 같은 오류 얻을 :
10-23 13:41:04.890 I/MonoDroid(8769): System.NotSupportedException: Could not activate JNI Handle 0x6ec00025 (key_handle 0x41ed37d8) of Java type 'md5b251e24e9fff919bf177c55c6e30cd8e/MainActivity' as managed type 'Test.Views.MainActivity'. ---> System.NotSupportedException: 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.
전체 디버그 로그 : 오류가이 라인에서 오는 것 같다 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이 null입니다. 이 문제를 어떻게 해결할 수 있습니까?
나는 다음과 같은 Catel 버전의 코드를 시도 :
4.1.0 - 코드
4.2.0 작동 - 코드
4.5.0 작동 - 코드
를 작동4.5.1 - 오류
4.5.4 - 오류
이 문제를 수정 한 후 기존 WPF + Catel (4.5.4) Windows 응용 프로그램을 Android로 포팅해야하므로 4.5.4를 사용해야합니다. 나는 때문에의이 클래스를 생성
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
조회수/MainActivity.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");
}
}
}
"Application onCreate Called"로그 메시지가 디버그 로그에 인쇄되기 때문에 이미 Application 클래스 인스턴스가 있다고 가정했습니다. 다른 인스턴스를 수동으로 만들어야합니까? 그렇다면 Catel Application 클래스 생성자의 두 매개 변수는 어디에 있습니까? – emil