System.NotImplementedException C#Xamarin,Android

时间:2013-12-19 10:35:52

标签: c# android xamarin.android

我将一个Android应用程序移植到Xamarin.android。项目构建成功,但会产生一些运行时错误。由于我是C#for android编程的新手,我无法弄清楚如何解决它: - 这是我的java代码: -

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;
    }
  });

以下是我在C#中尝试的内容: -

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

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

            FlipViewController fp;    //Create instance of outer class 
            public myCallback(FlipViewController _fp) //pass the instance to constructor of inner class
            {
                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 ();  //Error here
                }
            }

            #endregion



Instance    {System.NotImplementedException: The requested feature is not implemented.
at Flipperz.FlipViewController/myCallback.get_Handle () [0x00001] in c:\Users\pooja.gaonkar\Documents\Projects\Flipperz\Flipperz\com.zevenpooja.flip\FlipViewController.cs:88
at Android.Runtime.JValue..ctor (Android.Runtime.IJavaObject) [0x00007] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.10.1-branch/d23a19bf/source/monodroid/src/Mono.Android/src/Runtime/JValue.cs:79
at Android.OS.Handler..ctor (Android.OS.Handler/ICallback) [0x000c1] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.10.1-branch/d23a19bf/source/monodroid/src/Mono.Android/platforms/android-18/src/generated/Android.OS.Handler.cs:152
at Flipperz.FlipViewController..ctor (Android.Content.Context,int) [0x0000b] in c:\Users\pooja.gaonkar\Documents\Projects\Flipperz\Flipperz\com.zevenpooja.flip\FlipViewController.cs:37
at Flipperz.FlipHorizontalActivity.OnCreate (Android.OS.Bundle) [0x00029] in c:\Users\pooja.gaonkar\Documents\Projects\Flipperz\Flipperz\com.zevenpooja.flipperz\FlipHorizontalActivity.cs:27
at Android.App.Activity.n_OnCreate_Landroid_os_Bundle_ (intptr,intptr,intptr) [0x00011] in /Users/builder/data/lanes/monodroid-mlion-monodroid-4.10.1-branch/d23a19bf/source/monodroid/src/Mono.Android/platforms/android-18/src/generated/Android.App.Activity.cs:2178
at (wrapper dynamic-method) object.9482ba20-59f9-4425-b64d-e6ea29c92c79 (intptr,intptr,intptr) <IL 0x00017, 0x0001f>
}   System.NotImplementedException

1 个答案:

答案 0 :(得分:4)

我刚刚在这里阅读xamarin您必须继承Java.Lang.Object 所以使用界面应该是:

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

看看上面是否有效

从类开始直接继承(扩展)在java上将是:

 class myHandler extends Handler {


        public myHandler(  /*your ctor*/ ) { 
        } 

        @Override
        public void handleMessage(Message msg) {

            // a message is received; 
            if (msg.obj != null) { 
                    Your_object content = (Your_object) msg.obj;
            }
            super.handleMessage(msg);
        }
    }

从C#类开始直接继承(扩展)将是:

class myHandler : Handler {


    public myHandler(  /*your ctor*/  ) { 
    }

    public override void handleMessage(Message msg) {

        // a message is received; 
        if (msg.obj != null) { 
        Your_object content = (Your_object) msg.obj;
        }
        base.handleMessage(msg);
    }
}