第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

Xamarin Android java.lang.InstantiationException:

Xamarin Android java.lang.InstantiationException:

C#
胡子哥哥 2023-08-20 10:56:17
我正在嘗試將java庫實(shí)現(xiàn)到xamarin中。為此,我創(chuàng)建了一個 java 綁定庫并將 dll 引用到我的 xamarin.android 項(xiàng)目中?;旧?JBL 生成的代碼如下所示。正如你所看到的,它沒有帶有 0 個參數(shù)的構(gòu)造函數(shù)。public abstract class SAAgent : Service{        [Register(".ctor", "(Ljava/lang/String;)V", "")]        protected SAAgent(string p0);        protected SAAgent(IntPtr javaReference, JniHandleOwnership transfer);        [Register(".ctor", "(Ljava/lang/String;Ljava/lang/Class;)V", "")]        protected SAAgent(string p0, Class p1);我實(shí)現(xiàn)了一個繼承此生成的 SAAgent 類的類。 [Service(Exported = true, Name = "WearCompanion.Droid.ProviderService")]    public class ProviderService : SAAgent     {           public ProviderService() : base("ProviderService", SASOCKET_CLASS)        {        }當(dāng)我執(zhí)行代碼時,我收到一個異常Java.Lang.RuntimeException Message=無法實(shí)例化服務(wù) WearCompanion.Droid.ProviderService:java.lang.InstantiationException:java.lang.Class 沒有零參數(shù)構(gòu)造函數(shù)所以它期望我有 0 個參數(shù)構(gòu)造函數(shù)。Samsung Tizen 網(wǎng)站上有一個示例,他們的 java 示例如下所示public class ProviderService extends SAAgent {    private static final String TAG = "HelloAccessory(P)";    private static final Class<ServiceConnection> SASOCKET_CLASS = ServiceConnection.class;    public ProviderService() {        super(TAG, SASOCKET_CLASS);    }但是當(dāng)我查看 xamarin.android 項(xiàng)目的 obj 文件夾時,發(fā)現(xiàn)生成了 ProviderClass.java 文件。它看起來像下面這樣,public class ProviderService    extends com.samsung.android.sdk.accessory.SAAgent    implements        mono.android.IGCUserPeer{    public ProviderService (java.lang.String p0, java.lang.Class p1)    {        super (p0, p1);        if (getClass () == ProviderService.class)            mono.android.TypeManager.Activate ("WearCompanion.Droid.ProviderService, WearCompanion.Android", "System.String, mscorlib:Java.Lang.Class, Mono.Android", this, new java.lang.Object[] { p0, p1 });    }我不明白如何使 xamarin 從帶有 0 個構(gòu)造函數(shù)的 C# 生成 java 類?這是java綁定的問題嗎?PS,我已經(jīng)反編譯了jar來查看SAAgent java實(shí)現(xiàn),它與C#實(shí)現(xiàn)相同。所以java綁定庫做了正確的工作。我不確定是否應(yīng)該自己手動添加無參數(shù)構(gòu)造函數(shù)?
查看完整描述

1 回答

?
長風(fēng)秋雁

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超7個贊

最后我找到了解決方案。Xamarin 實(shí)際上在其文檔中包含了有關(guān)缺少構(gòu)造函數(shù)的信息。正如所解釋的,應(yīng)該使用導(dǎo)出屬性。因此,如果我按如下方式更改 C# 類構(gòu)造函數(shù)。它使用零參數(shù)構(gòu)造函數(shù)按預(yù)期生成準(zhǔn)確的 java 類。


[Export(SuperArgumentsString?=?"\"ProviderService\",?ProviderService_ProviderServiceSocket.class")]
????????public?ProviderService()?:?base("ProviderService",?SASOCKET_CLASS)
????????{

????????}


查看完整回答
反對 回復(fù) 2023-08-20
  • 1 回答
  • 0 關(guān)注
  • 159 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號