我建立一個使用定製TwoDScrollView在這裏找到一個Android應用程序:MonoDroid的:錯誤調用自定義視圖的構造函數時 - TwoDScrollView
http://blog.gorges.us/2010/06/android-two-dimensional-scrollview/
這同一個類可以在其他幾個網站上找到所引用,以及Stack Overflow的其他人提出了有關它的問題。我在之前使用Java/Eclipse構建的Android應用程序中使用它,並且我取得了成功。
從我目前的應用程序,我想用C#和MonoDroid的。我決定用C#重寫整個TwoDScrollView類。重寫後,然後在某些佈局XML中使用它,在嘗試運行我的代碼時,我會看到以下例外情況:
System.NotSupportedException已被拋出。無法從本地句柄44f4d310激活 類型爲MyProject.TwoDScrollView的實例。
System.Exception的:沒有構造發現 MyProject.TwoDScrollView ::構造函數(System.IntPtr, Android.Runtime.JniHandleOwnership)......更多的文本 如下....
我的佈局XML如下:
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:orientation="vertical"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
>
<myproject.TwoDScrollView
android:layout_width="fill_parent"
android:layout_height="fill_parent">
</myproject.TwoDScrollView>
</RelativeLayout>
每說明在下面的鏈接中使用MonoDroid的佈局XML自定義視圖:http://docs.xamarin.com/android/advanced_topics/using_custom_views_in_a_layout
層如下構造的TwoDScrollView類看:
public TwoDScrollView(Context context)
: base(context)
{
initTwoDScrollView();
}
public TwoDScrollView(Context context, IAttributeSet attrs)
: base(context, attrs)
{
initTwoDScrollView();
}
public TwoDScrollView(Context context, IAttributeSet attrs, int defStyle)
: base(context, attrs, defStyle)
{
initTwoDScrollView();
}
同樣的構造函數在C#版本存在作爲Java版本(你可以找到在上面的鏈接)。任何想法可能會出錯?如果有人想看,我可以發佈我的TwoDScrollView的完整C#代碼。它本質上與Java代碼的位相同 - 除了在C#中重寫。
感謝您的幫助!
非常感謝!這非常有幫助。我需要重新閱讀你的文章,並讓它沉澱一點,然後用這些新知識來看看我的代碼,看看我的問題可能在哪裏。當我找到某些東西時,我會再發表一條評論。 – David
我有簡單的代碼來重現問題(抱歉自從原始問題以來已經有很長一段時間了)。使用上面的代碼示例,只需添加一個方法:public override void RequestLayout()。覆蓋RequestLayout重現了這個問題。此外,重寫OnLayout()也會重現它......但並不十分可靠(仍不能確定它所做的確切情況)。 – David
你好,Jonp,這個問題現在是否可以在最新的Xamarin Android版本4.12.2中修復? – ForceMagic