2013-12-19 3 views
1

Iam портирование приложения для Android на Xamarin.android. Проект строится успешно, но дает некоторую ошибку времени выполнения. Так как я новичок в программировании на C# для андроида я не могу понять, как решить ее: - Вот мой Java-код: -System.NotImplementedException C# Xamarin, Android

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 
+0

вы бросаете NotImplementedException, либо реализовать те или просто прокомментируй и посмотри – qwr

+0

@qwr Спасибо за ваш отзыв .. Я пробовал комментировать раздел, но он дает мне сообщение о том, что мне нужно его реализовать. –

+0

да, это возвращает значение, поэтому вам нужно это сделать. На самом деле я не знаком с xamarin. Мне нужно посмотреть документацию, чтобы увидеть, что нужно вернуть – qwr

ответ

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

Я также обновил свой вопрос с помощью своего кода Java. Можете ли вы, пожалуйста, посмотреть и обновить, например wise –

+0

@PoojaGaonkar см. мой ответ и этот http://docs.xamarin.com/guides/android/advanced_topics/java_integration_overview/android_callable_wrappers/ – qwr

+0

спасибо за вашу помощь, что он работал, когда я расширил класс Java.Lang.Object. Я отмечу, что вы отвечаете, как принято. –

Смежные вопросы