Mono 继承一些特殊接口中带有 IJavaObject, IDisposable 接口的实现方法
2013-08-21 16:45
666 查看
转载自http://blog.csdn.net/pc_286/article/details/10150863
感谢群中好友 广州-PC286 帮助我很多疑难杂症。
在Mono技术群(223541981) 的好友 ”成都-SupLuo“ 在做Android 应用开发的时候发现一个实现一些监听接口的问题,经过几个小时的努力我终于把这个问题解决了。
首先看一下代码
例如: EditText 中需要监听焦点的问题 需要实现 View.IOnFocusChangeListener 接口 并赋值到 EditText 的 OnFocusChangeListener 属性中。
其实在java 中开发的 只需要 实现IOnFocusChangeListener中的方法 不过 这个接口还继承IJavaObject, IDisposable接口 这两个接口的方法在C#中是无法实现的,
EditText editText = FindViewById<EditText>(Resource.Id.My);
editText.OnFocusChangeListener = new Abc();
代码:
[csharp] view
plaincopy
public class Abc : View.IOnFocusChangeListener
{
public void OnFocusChange(View v, bool hasFocus)
{
//主要实现处理的代码
}
//下面这两个怎么实现呢?
public IntPtr Handle
{
get { throw new NotImplementedException(); }
}
public void Dispose()
{
throw new NotImplementedException();
}
}
这里看到 这两个实现它,很多人都会觉得很苦恼,究竟怎么实现呢?
[csharp] view
plaincopy
public IntPtr Handle
{
get { throw new NotImplementedException(); }
}
public void Dispose()
{
throw new NotImplementedException();
}
其实我们不用实现
通过官网 看到 IJavaObject http://androidapi.xamarin.com/?link=T%3aAndroid.Runtime.IJavaObject 写明是不需要实现的。
那怎才能使这些接口官网说不用实现,但在继承机制下又要实现,很矛盾吧?
后来发现 在mono 的 Java.Lang.Object 对象中也继承了 IJavaObject 和 IDisposable 接口,我们把这个Abc的类首先继承一下 Java.Lang.Object 再继承 View.IOnFocusChangeListener 接口这样就可以吧 IJavaObject 和 IDisposable 接口事例了
代码如下
[csharp] view
plaincopy
public class Abc :Java.Lang.Object, View.IOnFocusChangeListener
{
public void OnFocusChange(View v, bool hasFocus)
{
//主要实现处理的代码
}
}
这样就可以简单的实现了这个监听 ,和其他以继承IJavaObject 和 IDisposable 的接口同样可以使用
其实主要原因是IJavaObject 这个接口是为了标明这个实例对象必须是Java的实例对象。毕竟Android 是Java开发的,要从内存的序列化对象必须使用Java的实例的对象标记。
感谢群中好友 广州-PC286 帮助我很多疑难杂症。
在Mono技术群(223541981) 的好友 ”成都-SupLuo“ 在做Android 应用开发的时候发现一个实现一些监听接口的问题,经过几个小时的努力我终于把这个问题解决了。
首先看一下代码
例如: EditText 中需要监听焦点的问题 需要实现 View.IOnFocusChangeListener 接口 并赋值到 EditText 的 OnFocusChangeListener 属性中。
其实在java 中开发的 只需要 实现IOnFocusChangeListener中的方法 不过 这个接口还继承IJavaObject, IDisposable接口 这两个接口的方法在C#中是无法实现的,
EditText editText = FindViewById<EditText>(Resource.Id.My);
editText.OnFocusChangeListener = new Abc();
代码:
[csharp] view
plaincopy
public class Abc : View.IOnFocusChangeListener
{
public void OnFocusChange(View v, bool hasFocus)
{
//主要实现处理的代码
}
//下面这两个怎么实现呢?
public IntPtr Handle
{
get { throw new NotImplementedException(); }
}
public void Dispose()
{
throw new NotImplementedException();
}
}
这里看到 这两个实现它,很多人都会觉得很苦恼,究竟怎么实现呢?
[csharp] view
plaincopy
public IntPtr Handle
{
get { throw new NotImplementedException(); }
}
public void Dispose()
{
throw new NotImplementedException();
}
其实我们不用实现
通过官网 看到 IJavaObject http://androidapi.xamarin.com/?link=T%3aAndroid.Runtime.IJavaObject 写明是不需要实现的。
那怎才能使这些接口官网说不用实现,但在继承机制下又要实现,很矛盾吧?
后来发现 在mono 的 Java.Lang.Object 对象中也继承了 IJavaObject 和 IDisposable 接口,我们把这个Abc的类首先继承一下 Java.Lang.Object 再继承 View.IOnFocusChangeListener 接口这样就可以吧 IJavaObject 和 IDisposable 接口事例了
代码如下
[csharp] view
plaincopy
public class Abc :Java.Lang.Object, View.IOnFocusChangeListener
{
public void OnFocusChange(View v, bool hasFocus)
{
//主要实现处理的代码
}
}
这样就可以简单的实现了这个监听 ,和其他以继承IJavaObject 和 IDisposable 的接口同样可以使用
其实主要原因是IJavaObject 这个接口是为了标明这个实例对象必须是Java的实例对象。毕竟Android 是Java开发的,要从内存的序列化对象必须使用Java的实例的对象标记。
相关文章推荐
- Mono 继承一些特殊接口中带有 IJavaObject, IDisposable 接口的实现方法
- java 学习 私有类实现接口 ,一个类继承来的方法和接口实现方法重复第八天
- java Thread学习-Thread的实现方法 继承Thread,实现Runnable 接口
- Java中类继承、接口实现的一些要注意的细节问题
- 2018/01/08JAVA 基础 / 接口与继承/Object类——[思考?question:Object类的方法有什么用?为什么不直接在类中设计方法?
- Java 实现多线程的3种方法:继承Thread类;实现Runnable接口;实现Callable接口。具体代码实现实例
- Java中类继承、接口实现的一些细节(长期更新)
- JAVA 两种方法实现多线程(继承Thread和实现Runnable接口)
- 【转载】JAVA中线程的两种实现方法-实现Runnable接口和继承Thread类
- 【Java面试题】60 接口是否可继承接口? 抽象类是否可实现(implements)接口? 抽象类是否可继承具体类(concrete class)? 抽象类中是否可以有静态的main方法?
- JAVA 线程的两种基本实现方法(继承Thread类和实现Runnable接口)
- VC实现java定义的接口的一些方法
- java创建多线程的两种方法(继承Thread类/实现Runnable接口)
- Java小程序---接口中抽象方法的实现(解决了JAVA语言不能多继承的问题)
- java:关于继承的一些特殊方法.
- java两种启动线程方法根本不同,Thread继承和实现Runable接口
- Java中使用接口实现多继承和多态的方法
- 2018/01/07JAVA 基础 / 接口与继承:重写【子类继承并覆盖父类的对象方法】、隐藏【子类继承并覆盖父类的类方法】与实现类实现接口方法の区别
- Java类中继承、接口实现的一些细节
- java多线程编程中实现Runnable接口方法相对于继承Thread方法的优势