微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Xamarin.Forms Android - 单击动态创建的条目会在 AndroidRuntime

如何解决Xamarin.Forms Android - 单击动态创建的条目会在 AndroidRuntime

我正在尝试做的事情的描述
我的 ContentPage 上有一个 Stacklayout。用户一个添加按钮。通过单击此按钮,我的代码正在生成一个新的网格,其中包含一个用于再次删除此网格的按钮、3 个条目和一个编辑器。此网格已添加到 Stacklayouts 子项。

到目前为止一切顺利。网格被添加到 Stacklayout。但是当我点击 Android 的一个条目时,我得到一个 java.lang.Stringindexoutofboundsexception,我无法调试。

它在 UWP 上运行良好。我不知道为什么它不适用于 Android。令人沮丧的是,我有时可以点击条目,但没有任何反应,但另一次应用程序崩溃并显示异常

XAML 截断

<Button Text="Add Newx:Name="AddNew" Clicked="AddNewButton_Clicked"/>
<StackLayout x:Name="MaterialStack" VerticalOptions="Start" HorizontalOptions="Center" IsVisible="true" Spacing="15"/>



网格是如何生成

 public Grid CreateMaterialGrid()
    {
        
        Grid result = new Grid();            

        result.RowDeFinitions.Add(new RowDeFinition());
        result.RowDeFinitions.Add(new RowDeFinition());
        result.RowDeFinitions.Add(new RowDeFinition());
        result.RowDeFinitions.Add(new RowDeFinition());

        ColumnDeFinition c1 = new ColumnDeFinition
        {
            Width = new GridLength(0.5,GridUnitType.Star)
        };

        result.ColumnDeFinitions.Add(c1);
        result.ColumnDeFinitions.Add(new ColumnDeFinition());

        Button deleteThisGridButton = new Button
        {
            Text = "Delete"
        };



        Entry materialEntry = new Entry
        {
            Placeholder = "Material"
        };          

        Entry fuhrenEntry = new Entry
        {
            Placeholder = "Fuhren",Keyboard = Keyboard.Numeric
        };
        
        Entry tonnenEntry = new Entry
        {
            Placeholder = "Tonnen"
        };
     
     
        Editor lieferscheinNummernEditor = new Editor();
        lieferscheinNummernEditor.Placeholder = "Lieferscheinnummern";
        

        result.Children.Add(deleteThisGridButton,0);
        result.Children.Add(materialEntry,1);
        result.Children.Add(fuhrenEntry,2);
        result.Children.Add(tonnenEntry,3);
        result.Children.Add(lieferscheinNummernEditor,1,1);

        Grid.SetRowSpan(lieferscheinNummernEditor,3);
        Grid.SetColumnSpan(deleteThisGridButton,2);
                    

        return result;

    }

点击条目时出现异常

[AndroidRuntime] java.lang.Stringindexoutofboundsexception: length=19; index=20
[AndroidRuntime]    at java.lang.String.substring(String.java:2060)
[AndroidRuntime]    at java.lang.String.subSequence(String.java:2107)
[AndroidRuntime]    at android.widget.TextView.onProvideStructure(TextView.java:12712)
[AndroidRuntime]    at android.view.View.onProvideAutofillStructure(View.java:9211)
[AndroidRuntime]    at android.view.View.dispatchProvideStructure(View.java:10092)
[AndroidRuntime]    at android.view.View.dispatchProvideAutofillStructure(View.java:10085)
[AndroidRuntime]    at android.view.ViewGroup.dispatchProvideAutofillStructure(ViewGroup.java:4424)
[AndroidRuntime]    at android.view.ViewGroup.dispatchProvideAutofillStructure(ViewGroup.java:4424)
[AndroidRuntime]    at android.app.assist.AssistStructure$WindowNode.<init>(AssistStructure.java:527)
[AndroidRuntime]    at android.app.assist.AssistStructure.<init>(AssistStructure.java:2154)
[AndroidRuntime]    at android.app.ActivityThread.handleRequestAssistContextExtras(ActivityThread.java:3814)
[AndroidRuntime]    at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2164)
[AndroidRuntime]    at android.os.Handler.dispatchMessage(Handler.java:107)
[AndroidRuntime]    at android.os.Looper.loop(Looper.java:237)
[AndroidRuntime]    at android.app.ActivityThread.main(ActivityThread.java:7948)
[AndroidRuntime]    at java.lang.reflect.Method.invoke(Native Method)
[AndroidRuntime]    at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
[AndroidRuntime]    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1075)
**java.lang.Stringindexoutofboundsexception:** 'length=19; index=20'

我的尝试
我尝试定位问题,发现它发生在条目的焦点事件完成后。
我尝试删除条目以检查其中一个是否存在问题。
我尝试删除 EventListeners检查问题是否发生在其中之一。

但是没有任何效果错误总是相同的
java.lang.Stringindexoutofboundsexception:'length=19; index=20'
长度和索引也总是相同的。

如何解决点击时应用程序崩溃的问题在条目上?

我在 StackTrace 中查看了这个错误

at android.view.View.onProvideAutofillStructure


显然,自动填充功能存在问题(至少在三星手机上)。我将它从 Samsung Pass 切换到无。之后我的应用程序不再有问题。有没有办法为我的应用程序关闭自动填充? (使条目不使用此功能

解决方法

问题似乎出在三星的自动填充服务上。关闭后,异常不再发生

要关闭它,请转到设置 --> 常规管理 --> 语言和输入 --> 自动填充服务 --> 自动填充服务 --> 转到无

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。