Xamarin形式:将Focus设置为Entry控件时,出现System.ObjectDisposedException

时间:2019-03-07 20:42:24

标签: xamarin xamarin.forms

我有以下Xamarin表单页面,该页面在此行上引发了异常...

enter image description here

第一次加载此页面时,OnAppearing可以正常工作,可以正确设置焦点,并且不会引发异常。

当我导航回到该页面(即注销)时,OnAppearing会引发以下事件...

  

System.ObjectDisposedException:无法访问已处置的对象。   对象名称:“ Xamarin.Forms.Platform.Android.EntryRenderer”。

在Xamarin Forms中为页面上的控件设置焦点的最佳方法是什么?

2 个答案:

答案 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的代码。