sto costruendo un'applicazione Android che utilizza il TwoDScrollView fuoriserie trovato qui:MonoDroid: errore quando si chiama il costruttore di visualizzazione personalizzata - TwoDScrollView
http://blog.gorges.us/2010/06/android-two-dimensional-scrollview/
Questa stessa classe può essere trovata riferimento a diversi altri siti web e altri su Stack Overflow hanno posto domande riguardo ad esso. Lo stavo usando in una precedente applicazione Android che stavo creando usando Java/Eclipse, e stavo avendo successo.
Con la mia applicazione corrente, volevo usare C# e MonoDroid. Ho deciso di riscrivere l'intera classe TwoDScrollView in C#. Dopo averlo riscritto e utilizzato in XML di layout, ottengo le seguenti eccezioni quando provo a eseguire il mio codice:
System.NotSupportedException è stato lanciato. Impossibile attivare l'istanza di tipo MyProject.TwoDScrollView dall'impugnatura nativa 44f4d310.
System.Exception:. Nessun costruttore trovata per MyProject.TwoDScrollView :: ctor (System.IntPtr, Android.Runtime.JniHandleOwnership) ...... con più testo che segue ....
mio layout XML è la seguente:
<?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>
per le istruzioni al seguente link sull'utilizzo di visualizzazioni personalizzate nel layout XML in MonoDroid: http://docs.xamarin.com/android/advanced_topics/using_custom_views_in_a_layout
I costruttori alla classe sguardo TwoDScrollView come segue:
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();
}
esistono le stesse costruttori nella versione C#, come nella versione Java (che potete trovare al link qui sotto). Qualche idea su cosa potrebbe andare storto? Posso pubblicare il codice C# completo del mio TwoDScrollView se qualcuno vorrebbe vederlo. È essenzialmente uguale al bit di codice Java per bit, tranne che riscritto in C#.
Grazie per qualsiasi aiuto!
grazie mille! E 'stato molto utile. Ho bisogno di rileggere il tuo post e lasciarlo affondare un po ', e quindi dare un'occhiata al mio codice con questa nuova conoscenza e vedere dove potrebbe essere il mio problema. Pubblicherò un altro commento quando trovo qualcosa. – David
Ho un codice semplice che riproduce il problema (mi dispiace per il lungo periodo di tempo trascorso dalla domanda originale). Utilizzando l'esempio di codice sopra, è sufficiente aggiungere un metodo: public override void RequestLayout(). Overriding RequestLayout riproduce il problema. Inoltre, sovrascrivendo OnLayout() lo riprodurrà anche ... ma non altrettanto attendibilmente (non riesco ancora a capire i casi esatti in cui avviene). – David
Ciao Jonp, è possibile che questo problema sia stato risolto nell'ultima versione di Xamarin per Android 4.12.2? – ForceMagic