2 Stimmen

System.NotImplementedException C# Xamarin, Android

Ich portiere eine Android-App nach Xamarin.Android. Das Projekt wird erfolgreich erstellt, gibt aber einige Laufzeitfehler aus. Da ich neu in der Programmierung in C# für Android bin, kann ich nicht herausfinden, wie ich es lösen soll: Hier ist mein Java-Code:-

private Handler handler = new Handler(new Handler.Callback() {
    @Override
    public boolean handleMessage(Message msg) {
      if (msg.what == MSG_SURFACE_CREATED) {
        contentWidth = 0;
        contentHeight = 0;
        requestLayout();
        return true;
      } else {
        Log.w("Unknown msg.what: " + msg.what);
      }
      return false;
    }
  });

Hier ist, was ich in C# ausprobiert habe:-

private Android.OS.Handler handler = new Android.OS.Handler(new myCallback ());

        private class myCallback : Android.OS.Handler.ICallback //innere Klasse
        {
            public myCallback()
            {
            }

            FlipViewController fp;    //Instanz der äußeren Klasse erstellen
            public myCallback(FlipViewController _fp) //Instanz an Konstruktor der inneren Klasse übergeben
            {
                fp = _fp;
            }
            #region ICallback implementation

            public bool HandleMessage (Message msg)
            {

                if (msg.What == MSG_SURFACE_CREATED)
                {
                    contentWidth = 0;
                    contentHeight = 0;

                    fp.RequestLayout ();

                    return true;
                }
                else
                {
                    FlipperzLog.w("Unknown msg.what: " + msg.What);
                }
                return false;
                throw new NotImplementedException ();
            }

            #endregion

            #region IDisposable implementation

            public void Dispose ()
            {
                throw new NotImplementedException ();
            }

            #endregion

            #region IJavaObject implementation

            public IntPtr Handle 
            {
                get {
                    throw new NotImplementedException ();  //Hier Fehler
                }
            }

            #endregion

5voto

qwr Punkte 3620

Ich habe gerade xamarin hier gelesen, dass du von Java.Lang.Object erben musst, also sollte es mit dem Interface folgendermaßen sein:

private class myCallback : Java.Lang.Object, Android.OS.Handler.ICallback //innere Klasse
{
}

Schau, ob das oben Genannte funktioniert

Direktes Erben (Extendieren) von der Klasse in Java wäre:

 class myHandler extends Handler {

        public myHandler(  /*dein Konstruktor*/ ) { 
        } 

        @Override
        public void handleMessage(Message msg) {

            // eine Nachricht wird empfangen; 
            if (msg.obj != null) { 
                    Dein_Objekt content = (Dein_Objekt) msg.obj;
            }
            super.handleMessage(msg);
        }
    }

Direktes Erben (Extendieren) von der Klasse in C# wäre:

class myHandler : Handler {

    public myHandler(  /*dein Konstruktor*/ ) { 
    }

    public override void handleMessage(Message msg) {

        // eine Nachricht wird empfangen; 
        if (msg.obj != null) { 
        Dein_Objekt content = (Dein_Objekt) msg.obj;
        }
        base.handleMessage(msg);
    }
}

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X