Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/364.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 在Android上从自定义标签选择文本时,Xamarin.Forms应用程序崩溃_Java_C#_Android_.net_Xamarin.forms - Fatal编程技术网

Java 在Android上从自定义标签选择文本时,Xamarin.Forms应用程序崩溃

Java 在Android上从自定义标签选择文本时,Xamarin.Forms应用程序崩溃,java,c#,android,.net,xamarin.forms,Java,C#,Android,.net,Xamarin.forms,Iv'e在Xamarin.Forms中创建了一个应用程序,然后为android创建了一个带有自定义渲染器的自定义标签。渲染器的工作是使标签文本可选择。现在,标签文本是可选择的。问题是,虽然它与常规标签完美配合,但当我尝试在同时包含希伯来语和英语(RTL和LTR)文本的标签中选择文本时,应用程序崩溃,我出现以下错误: Java.Lang.ArrayIndexOutOfBoundsException:'length=35;索引=35’(索引和长度因碰撞而异,但始终相等) 我在网上寻找解决方案,但找不

Iv'e在Xamarin.Forms中创建了一个应用程序,然后为android创建了一个带有自定义渲染器的自定义标签。渲染器的工作是使标签文本可选择。现在,标签文本是可选择的。问题是,虽然它与常规标签完美配合,但当我尝试在同时包含希伯来语和英语(RTL和LTR)文本的标签中选择文本时,应用程序崩溃,我出现以下错误: Java.Lang.ArrayIndexOutOfBoundsException:'length=35;索引=35’(索引和长度因碰撞而异,但始终相等)

我在网上寻找解决方案,但找不到。。。我还尝试了渲染器的其他实现,它们都有相同的错误。(我认为这可能是Android/Xamarin的问题) 有人能帮我吗

渲染器的代码:

class CustomLabelRenderer : LabelRenderer
{
    public CustomLabelRenderer(Context context) : base(context) {}
    protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
    {
            base.OnElementChanged(e);
            Control.SetTextIsSelectable(true);
    }
}
类CustomLabelRenderer:LabelRenderer
{
公共CustomLabelRenderer(上下文):基本(上下文){}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
Control.SetTextIsSelectable(true);
}
}
(自定义标签(SELabel)没有代码,它只是从常规标签继承)

设备日志:

我使用谷歌将“欢迎来到Xamarin.Forms”翻译成希伯来语“ברוךאל-Xamarin.Forms”。并制作一个代码样本供我测试。它工作得很好。请检查我的密码

塞拉贝尔:

public class SELabel:Label
{
}
CustomLabelRenderer:

[assembly: ExportRenderer(typeof(SELabel), typeof(CustomLabelRenderer))]
namespace SelectableLabel.Droid
{
public class CustomLabelRenderer : LabelRenderer
{
    public CustomLabelRenderer(Context context) : base(context)
    {

    }
    protected override void OnElementChanged(ElementChangedEventArgs<Label> e)
    {
        base.OnElementChanged(e);
        Control.SetTextIsSelectable(true);
    }
}
}
[程序集:ExportRenderer(typeof(SELabel)、typeof(CustomLabelRenderer))]
命名空间SelectableLabel.Droid
{
公共类CustomLabelRenderer:LabelRenderer
{
公共CustomLabelRenderer(上下文):基本(上下文)
{
}
受保护的覆盖无效OnElementChanged(ElementChangedEventArgs e)
{
基础。一个要素发生变化(e);
Control.SetTextIsSelectable(true);
}
}
}
用法:

 <StackLayout>
    <!--  Place new controls here  -->
    <local:SELabel
        HorizontalOptions="Center"
        Text="Welcome to Xamarin.Forms! Hebrew: ברוך הבא ל - Xamarin.Forms."
        VerticalOptions="CenterAndExpand" />
</StackLayout>

截图:

您可以从GitHub下载源文件以供参考。

错误可能是某些语言使用多个字节来表示字符。很抱歉,我帮不上更多的忙。谢谢你,这正是我所做的。。。你可以试一下这段文字,看看是否会出现这段文字,看看是否会出现这段文字的尝试,看看是否会出现这段文字的崩溃情况,你可以试一下这段文字,看看是否会出现这段文字的试试试一下,看看是否会有这段文字的试试试试试试试一下这段文字,如果会出现这段文字的试试试试试试试试一下,如果会出现这段文字,你可以试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试试一下,,,你能能能能能能能能能能能能试试这条条条条条条试试试试试试试试试试一下一下一下这段段文本的这条条条条条条文本,试试试试试试试试试试试试试试试试试试试试一下一下一下一下一下一下一下一下一下一下一下一下一下一下一下一下一下一下一下一下一下一下一下一下一下,这段段文本,,我测试您提供的文本。对我来说效果很好。请检查屏幕截图。你可以用我的项目来测试文本。