2012-03-29 39 views
11

Tôi đang cố gắng tạo một lớp con của "Android.App.Application" để ghi đè "OnCreate()", nhưng tôi không thể làm cho nó hoạt động. Đây là mã của tôi:Lớp con ứng dụng tùy chỉnh trong Mono cho Android

namespace MonoAndroidAcra { 
    [Application(Debuggable=true, 
       Label="insert label here", 
       ManageSpaceActivity = typeof(MainActivity))] 
    class AcraApp : Application { 
    public override void OnCreate() { 
     base.OnCreate(); 
    } 
    } 
} 

MainActivity chỉ là hoạt động mẫu mặc định.

Bây giờ, khi tôi gỡ lỗi dự án tôi nhận được một System.NotSupportedException:

Không thể kích hoạt thể hiện của loại MonoAndroidAcra.AcraApp từ tay cầm có nguồn gốc 405191a0

Không gọi stack có sẵn cho ngoại lệ này.

Làm cách nào để thực hiện điều này một cách chính xác? Tôi không thể tìm thấy bất kỳ ví dụ cho việc này.

Tôi đang sử dụng phiên bản Mono ổn định mới nhất dành cho Android.

Trả lời

27

Bạn cần phải thêm constructor này đến lớp của bạn để làm cho nó hoạt:

public AcraApp (IntPtr javaReference, JniHandleOwnership transfer) 
    : base(javaReference, transfer) 
{ 
} 
+0

Cảm ơn một đống. Đã tìm kiếm những gì tôi đã làm sai! –

1

Đây là một "trừu tượng rò rỉ", explained by a Xamarin Team member, đã được cố định trong mới nhất Xamarin Android phiên bản 4.12.2 , trong đó nó không được yêu cầu nữa để thêm constructor bị thiếu này. Android SDK 22.6 cũng được yêu cầu để hoạt động đúng với phiên bản Xamarin này. Tuy nhiên việc cập nhật SDK chỉ sẽ không khắc phục vấn đề này, điều này thực sự là Xamarin liên quan.

Đối với bất kỳ ai sử dụng phiên bản cũ hơn, Greg's solution vẫn nên được sử dụng.

+0

Dường như [@GregShackles answer] (http://stackoverflow.com/a/9963637/121968) là bắt buộc ngay cả đối với 6.1.0.71. –

+0

@TN. Tốt để biết cảm ơn đã chỉ ra rằng, tôi tự hỏi nếu đó là một vấn đề hồi quy mà chỉ cần trở lại in Tôi đã không được sử dụng Xamarin trong khoảng 2 năm nay. – ForceMagic

Các vấn đề liên quan