Android 使用RequestFocus()后,EditText字段的行为为禁用

Android 使用RequestFocus()后,EditText字段的行为为禁用,android,xamarin,xamarin.android,android-edittext,focus,Android,Xamarin,Xamarin.android,Android Edittext,Focus,我有一个EditText字段,用户在其中输入库存位置。如果位置无效,则会出现错误描述(即“未找到位置”),之后用户必须再次按该字段以尝试其他位置 我正在尝试使用RequestFocus(),这样用户在进入另一个位置之前就不需要再次按下。它似乎起作用了。EditText字段变为下划线,光标在其开头闪烁,但无法键入任何内容。这就好像该字段被禁用了一样,但debug显示它已启用且已聚焦。事实上,它是唯一启用的EditText <EditText p1:layout_width="150

我有一个EditText字段,用户在其中输入库存位置。如果位置无效,则会出现错误描述(即“未找到位置”),之后用户必须再次按该字段以尝试其他位置

我正在尝试使用RequestFocus(),这样用户在进入另一个位置之前就不需要再次按下。它似乎起作用了。EditText字段变为下划线,光标在其开头闪烁,但无法键入任何内容。这就好像该字段被禁用了一样,但debug显示它已启用且已聚焦。事实上,它是唯一启用的EditText

 <EditText
    p1:layout_width="150dp"
    p1:layout_height="33dp"
    p1:layout_below="@id/spnrAreas"
    p1:id="@+id/etxtLocation"
    p1:layout_toRightOf="@id/lblLocation"
    p1:textColor="@color/Black"
    p1:inputType="textCapCharacters"
    p1:nextFocusDown="@+id/etxtItem" />

                       {txtErrorMessage.Text = "Location not found";
                        etxtLocation.Text = "";
                        etxtLocation.RequestFocus(); 
                        return; }

{txtErrorMessage.Text=“未找到位置”;
etxtLocation.Text=“”;
etxtLocation.RequestFocus();
返回;}
除了RequestFocus()之外,是否有其他方法可以使程序表现得像按下了EditText(etxtLocation)一样?

尝试以下方法:

etxtLocation.RequestFocus(); 
InputMethodManager imm = (InputMethodManager) GetSystemService(Context.InputMethodService);  
imm.ShowSoftInput(etxtLocation, ShowFlags.Implicit);

我可以通过将“etxtLocation.RequestFocus()”移动到“extItem”FocusChange()事件处理程序中来解决这个问题,在按下enter键后,焦点转移到了“extItem”FocusChange()事件处理程序中。从那里,它的行为符合预期:

        void etxtItem_FocusChange(object sender, View.FocusChangeEventArgs e)
    {
        if (etxtItem.HasFocus)
        {
            //request focus back to Location if its value was incorrect.
            if (String.IsNullOrEmpty(etxtLocation.Text))
           {
                etxtLocation.RequestFocus();
            }  } } return;

您是否为该字段定义了输入法?你初始化了这个字段了吗
private EditText etxtLocation=findViewById(R.id.field\u name)
然后聚焦它?我已经编辑了原始文件,并在.axml中显示了etxtLocation定义。它初始化为空白,然后在输入第一个值(有效或无效)后再次初始化。当位置有效时,控件移动到设计的下一个EditText。这适用于本机Android。编辑以使其特定于Xamarin.Android。我可以尝试添加适当的引用。不幸的是,它没有起作用。