我有以下Xamarin表单页面,该页面在此行上引发了异常...
第一次加载此页面时,OnAppearing可以正常工作,可以正确设置焦点,并且不会引发异常。
当我导航回到该页面(即注销)时,OnAppearing会引发以下事件...
System.ObjectDisposedException:无法访问已处置的对象。 对象名称:“ Xamarin.Forms.Platform.Android.EntryRenderer”。
在Xamarin Forms中为页面上的控件设置焦点的最佳方法是什么?
答案 0 :(得分:3)
我不确定您的XAML中包含什么内容,但是如果您在XAML中的条目上定义了x:Name="_entry"
,并使用该名称而不是FindByName
来直接访问控件,那么它应该可以工作很好。
答案 1 :(得分:0)
我尝试在我的身边重现您的问题,但是它工作正常,并且当我单击“按钮”导航到另一个页面并返回时,没有任何问题。请看一下我的代码:
<StackLayout>
<Label
HorizontalOptions="CenterAndExpand"
Text="Welcome to Xamarin.Forms!"
VerticalOptions="CenterAndExpand" />
<Entry
x:Name="UserNameentry"
HorizontalOptions="FillAndExpand"
VerticalOptions="CenterAndExpand" />
<Button
x:Name="btn1"
Clicked="btn1_Clicked"
HeightRequest="50"
HorizontalOptions="FillAndExpand"
Text="btn1"
VerticalOptions="CenterAndExpand"
WidthRequest="200" />
</StackLayout>
public Page4()
{
InitializeComponent();
}
protected override void OnAppearing()
{
base.OnAppearing();
var usernameentry = FindByName("UserNameentry") as Entry;
usernameentry.Focus();
}
private async void btn1_Clicked(object sender, EventArgs e)
{
Page3 page = new Page3();
await Navigation.PushModalAsync(page);
}
如果仍然存在此问题,请在此处提供一些有关xaml的代码。