将Android Java代码转换为Xamarin C#

幸运女神

我将代码从本机Android JAVA代码转换为Xamarin C#Android代码时遇到问题

我有一个可以帮助我延迟自定义AutoComleteTextView搜索开始的类

public class DelayAutoCompleteTextView : AutoCompleteTextView
{
    public static Context _Context {get; set;}
    private static Android.Util.IAttributeSet _Attrs { get; set; }

public DelayAutoCompleteTextView(Context context, Android.Util.IAttributeSet attrs) : base(context, attrs)
{
    _Context = context;
    _Attrs = attrs;
}

private static int MESSAGE_TEXT_CHANGED = 100;
private static int DEFAULT_AUTOCOMPLETE_DELAY = 750;

private int mAutoCompleteDelay = DEFAULT_AUTOCOMPLETE_DELAY;
private ProgressBar mLoadingIndicator;

public class mHandler : Handler
{
    public override void HandleMessage(Message msg)
    {
        DelayAutoCompleteTextView.base.PerformFiltering((Java.Lang.ICharSequence)msg.Obj, msg.Arg1);
    }
}

public void setLoadingIndicator(ProgressBar progressBar)
{
    mLoadingIndicator = progressBar;
}

public void setAutoCompleteDelay(int autoCompleteDelay)
{
    mAutoCompleteDelay = autoCompleteDelay;
}

protected override void PerformFiltering(Java.Lang.ICharSequence text, int keyCode)
{
    if (mLoadingIndicator != null)
    {
        mLoadingIndicator.Visibility = ViewStates.Visible;
    }

    mHandler.removeMessages(MESSAGE_TEXT_CHANGED);
    mHandler.sendMessageDelayed(mHandler.obtainMessage(MESSAGE_TEXT_CHANGED, text), mAutoCompleteDelay);
}

public override void OnFilterComplete(int count)
{
    if (mLoadingIndicator != null)
    {
        mLoadingIndicator.Visibility = ViewStates.Gone;
    }

    base.OnFilterComplete(count);
}}

但是有3条错误消息:

  • 1) DelayAutoCompleteTextView.base.PerformFiltering((Java.Lang.ICharSequence)msg.Obj, msg.Arg1);

  • 2) mHandler.removeMessages(MESSAGE_TEXT_CHANGED);

  • 3) mHandler.sendMessageDelayed(mHandler.obtainMessage(MESSAGE_TEXT_CHANGED, text), mAutoCompleteDelay);

从github复制的Java原始代码

请帮我转换。对不起,我的英语不好 )

恶德

发生第一个错误是因为与Java不同,C#中的嵌套类无法访问父类的this指针,因为它们是单独的实体。

mHandler建议您不要将其Handler(Action<Message>)设为一个变量,而应使用构造函数来创建一个Handler可以访问的成员的类,而不是创建一个类DelayAutoCompleteTextView

private readonly Handler mHandler = new Handler(delegate (Message msg) {
    base.PerformFiltering((Java.Lang.ICharSequence)msg.Obj, msg.Arg1);
});

第二个和第三个错误是简单的拼写错误。

的Xamarin当量removeMessagessendMessageDelayedobtainMessage只是RemoveMessagesSendMessageDelayedObtainMessage,下面的PascalCase方法命名约定由微软C#编码风格指南概述。所有Xamarin基类库和Java库的生成绑定都遵循此约定。

我还建议您将字段名称从更改为,mSomeFieldsomeField遵循MS C#编码样式指南。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

将android java转换为xamarin c#

来自分类Dev

将C#代码转换为Java代码

来自分类Dev

将Java代码转换为C#代码

来自分类Dev

将Java代码转换为c#代码(将hexString转换为ByteArray)

来自分类Dev

将XmlSerializer代码从Java转换为C#

来自分类Dev

使用RSA将Java代码转换为C#

来自分类Dev

如何将Java代码片段转换为C#

来自分类Dev

将C ++代码转换为JAVA

来自分类Dev

将C ++ DTW代码转换为Java

来自分类Dev

将Java代码转换为Objective C

来自分类Dev

将Java代码转换为目标c

来自分类Dev

将VB代码转换为C#

来自分类Dev

将VB代码转换为C#

来自分类Dev

将VB转换为C#代码

来自分类Dev

将C#代码转换为python

来自分类Dev

将 C# 代码转换为 VBscript

来自分类Dev

如何将Javascript代码转换为C#代码

来自分类Dev

将Java转换为C#(Unity)

来自分类Dev

将C ++代码转换为C#:SendMessageTimeout()

来自分类Dev

将C ++代码转换为C#:SendMessageTimeout()

来自分类Dev

如何将C#代码转换为C ++?

来自分类Dev

如何将C ++代码转换为C#

来自分类Dev

将 C++ 非托管代码转换为 C#

来自分类Dev

需要帮助将代码片段从Java转换为C#等价物

来自分类Dev

将C#中的“自动属性”转换为Java备用代码

来自分类Dev

需要帮助将代码片段从Java转换为C#等效

来自分类Dev

将Hashmap Java代码转换为Objective C

来自分类Dev

将数学表达式转换为C或Java代码

来自分类Dev

如何将这段Java代码转换为C ++?