C#android中的回调
我已经在处理程序上实现了回调(在java中)。我需要在c#(Xamarin)上实现同样的功能。但到目前为止,我还无法找到用C#如何做到这一点的解决方案。我对c#是新手,因此知识很少 以下是java代码:-C#android中的回调,c#,java,android,C#,Java,Android,我已经在处理程序上实现了回调(在java中)。我需要在c#(Xamarin)上实现同样的功能。但到目前为止,我还无法找到用C#如何做到这一点的解决方案。我对c#是新手,因此知识很少 以下是java代码:- private Handler handler = new Handler(new Handler.Callback() { @Override public boolean handleMessage(Message msg) { if (msg.what
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#?中实现同样的功能吗?在Xamarin中,您仍然将使用这个“内联”方法,由关键字“delegate”定义。 这是因为回调是函数指针,c#支持这一点,java不支持,xamarin也不支持,但尝试生成一个桥。 xamarin中的学员如下所述: 事件是前进的方向(使用代理)。以下是一些示例代码:
class CallingClass
{
private SurfaceCreatingClass m_surfacecreatingclass;
public CallingClass()
{
m_surfacecreatingclass = new SurfaceCreatingClass();
m_surfacecreatingclass.SurfaceCreatedHandler += OnFinished;
m_surfacecreatingclass.CreateSurface();
}
void OnFinished(int iMessageWhat)
{
if (iMessageWhat == SurfaceCreatingClass.MSG_SURFACE_CREATED)
{
contentWidth = 0;
contentHeight = 0;
RequestLayout();
}
else
{
Log.w("Unknown msg.what: " + iMessageWhat);
}
}
}
class SurfaceCreatingClass
{
public delegate void SurfaceCreatedDelegate(int iWhat);
public event SurfaceCreatedDelegate SurfaceCreatedHandler;
public const int MSG_SURFACE_CREATED = 1;
public void CreateSurface()
{
/////////////////////////////
// Surface creation code here
// ...
/////////////////////////////
if (SurfaceCreatedHandler != null)
SurfaceCreatedHandler(MSG_SURFACE_CREATED);
}
}
谢谢你的关注。如果你能给我一个与我的java代码相关的例子,那会很有帮助。这里有很多:这种方法被称为“观察者可观察模式”。在xamarin研究中,您可以下载“普通样本”。谢谢你的关注,但我很抱歉,因为我是c#的新手。您能指导我如何继续使用问题中的代码吗?我已经修改了代码,使其看起来更像您的原始示例,尽管它仍然与以前基本相同。