ich eine Android-Anwendung am Bau, die der custom-built TwoDScrollView hier verwendet gefunden:MonoDroid: Fehler beim Konstruktor von benutzerdefinierter Ansicht aufrufen - TwoDScrollView
http://blog.gorges.us/2010/06/android-two-dimensional-scrollview/
an mehreren anderen Websites zu finden ist Diese gleiche Klasse verweist und andere auf Stack Overflow haben Fragen dazu gestellt. Ich benutzte es in einer früheren Android-Anwendung, die ich mit Java/Eclipse erstellte, und ich hatte Erfolg.
Mit meiner aktuellen Anwendung wollte ich C# und MonoDroid verwenden. Ich beschloss, die gesamte TwoDScrollView-Klasse in C# neu zu schreiben. Nach dem Umschreiben und dann in einigen XML-Layouts erhalte ich beim Ausführen meines Codes die folgenden Ausnahmen:
System.NotSupportedException wurde ausgelöst. Instanz des Typs MyProject.TwoDScrollView vom systemeigenen Handle 44f4d310 kann nicht aktiviert werden.
System.Exception:. Kein Konstruktor für MyProject.TwoDScrollView gefunden :: Ctor (System.IntPtr, Android.Runtime.JniHandleOwnership) ...... mit mehr Text, dass folgt ....
Mein Layout XML ist wie folgt:
<?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>
der Anleitung unter folgendem Link auf benutzerdefinierte Ansichten in Layout XML in MonoDroid mit: http://docs.xamarin.com/android/advanced_topics/using_custom_views_in_a_layout
Die Konstrukteure auf die TwoDScrollView Klasse wie folgt aussehen:
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();
}
Die gleichen Konstrukteure in der C# Version existieren, wie in der Java-Version (die Sie auf den obigen Link zu finden). Irgendeine Idee, was könnte schief gehen? Ich kann den vollständigen C# -Code meiner TwoDScrollView veröffentlichen, wenn jemand sie sehen möchte. Es ist im Wesentlichen das gleiche wie der Java-Code Bit für Bit - außer in C# neu geschrieben.
Danke für jede Hilfe!
vielen dank! Das war sehr hilfreich. Ich muss deinen Beitrag erneut lesen und ihn ein wenig sinken lassen. Dann schaue ich mir meinen Code mit diesem neuen Wissen an und sehe, wo mein Problem liegen könnte. Ich werde einen weiteren Kommentar posten, wenn ich etwas finde. – David
Ich habe einfachen Code, der das Problem reproduziert (Entschuldigung für die lange Zeit seit der ursprünglichen Frage). Fügen Sie mithilfe des obigen Codebeispiels einfach eine Methode hinzu: public override void RequestLayout(). Override RequestLayout reproduziert das Problem. Überschreiben OnLayout() wird es auch reproduzieren ... aber nicht ganz so zuverlässig (immer noch nicht herausfinden, die genauen Fälle, in denen es tut). – David
Hallo Jonp, ist es möglich, dass dieses Problem jetzt in der neuesten Xamarin Android Version 4.12.2 behoben ist? – ForceMagic