问题描述
我正在尝试做的事情的描述
我的 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 切换到无。之后我的应用程序不再有问题。有没有办法为我的应用程序关闭自动填充? (使条目不使用此功能)