Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/193.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如果出现错误,如何以编程方式请求关注TextInputLayout?_Android_Androiddesignsupport - Fatal编程技术网

Android 如果出现错误,如何以编程方式请求关注TextInputLayout?

Android 如果出现错误,如何以编程方式请求关注TextInputLayout?,android,androiddesignsupport,Android,Androiddesignsupport,我在一个表单中有五个字段,在验证时,错误消息和浮动标签工作正常,但在调用特定TextInputLayout对象上的requestFocus()方法时出现错误,则不会聚焦 代码段: BetterSpinner Spinner_material = (BetterSpinner)rfqItem.findViewById(R.id.Spinner_material); if(Spinner_material.getText()!=null &am

我在一个表单中有五个字段,在验证时,错误消息和浮动标签工作正常,但在调用特定
TextInputLayout
对象上的
requestFocus()
方法时出现错误,则不会聚焦

代码段:

                BetterSpinner Spinner_material = (BetterSpinner)rfqItem.findViewById(R.id.Spinner_material);
            if(Spinner_material.getText()!=null && Spinner_material.getText().toString().length()>0)
            {
                TextInputLayout_category.setError(null);
                TextInputLayout_category.setErrorEnabled(false);
            }
            else
            {
                if(isReporting)
                {
                    TextInputLayout_category.setErrorEnabled(true);
                    TextInputLayout_category.setError(baseActivity.getString(R.string.addrfq_validationerror_material_category));
                    TextInputLayout_category.requestFocus();
                }
                flag=false;
            }
XML代码段:

<android.support.design.widget.TextInputLayout
            android:id="@+id/TextInputLayout_category"
            android:layout_width="match_parent"
            android:layout_height="wrap_content">
            <com.power2sme.android.utilities.customviews.BetterSpinner
                android:id="@+id/Spinner_material"
                android:layout_width="match_parent"
                android:layout_height="wrap_content"
                android:hint="@string/addrfq_hint_sku_category"
                android:imeOptions="actionNext"
                android:inputType="textNoSuggestions"
                android:singleLine="true"/>
        </android.support.design.widget.TextInputLayout>


BetterSpinner是一个第三方库,它源于AutoCompleteTextView。

我将给出一个在我的应用程序中运行的示例

private boolean validatePassword() {
        if (inputPassword.getText().toString().trim().isEmpty()) {
            inputLayoutPassword.setErrorEnabled(true);
            inputLayoutPassword.setError(getString(R.string.err_msg_password));
            requestFocus(inputPassword);
            return false;
        } else {
            inputLayoutPassword.setError(null);
            inputLayoutPassword.setErrorEnabled(false);
        }

        return true;
    }


private void requestFocus(View view) {
        if (view.requestFocus()) {
            getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
        }
    }
编辑 将my requestFocus方法添加到代码中,然后尝试以下代码:

BetterSpinner Spinner_material = (BetterSpinner)rfqItem.findViewById(R.id.Spinner_material);
            if(Spinner_material.getText()!=null && Spinner_material.getText().toString().length()>0)
            {
                TextInputLayout_category.setError(null);
                TextInputLayout_category.setErrorEnabled(false);
            }
            else
            {
                if(isReporting)
                {
                    TextInputLayout_category.setErrorEnabled(true);
                    TextInputLayout_category.setError(baseActivity.getString(R.string.addrfq_validationerror_material_category));
                    requestFocus(Spinner_material);
                }
                flag=false;
            }

请求视图焦点时:

private void requestFocus(View view) {
    if (view.requestFocus()) {
        yourcoordinatorlayout.clearFocus();
        view.requestFocus();
        getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_VISIBLE);
    }
}
在协调布局中清除所有焦点时:

private void clearFocusFromAll() {
    yourcoordinatorlayout.clearFocus();
}
在您的
活动中
声明
协调人布局
类似:

CoordinatorLayout yourcoordinatorlayout=(CoordinatorLayout)findViewById(R.id.registerCoordinatorLayout);
xml将类似于:

<?xml version="1.0" encoding="utf-8"?>
<android.support.design.widget.CoordinatorLayout     
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:fitsSystemWindows="true"
android:id="@+id/registerCoordinatorLayout"
tools:context=".activity.RegisterActivity">

<android.support.design.widget.AppBarLayout
    android:layout_width="match_parent"
    android:layout_height="wrap_content"
    android:theme="@style/AppTheme3.AppBarOverlay">

    <android.support.v7.widget.Toolbar
        android:id="@+id/toolbar"
        android:layout_width="match_parent"
        android:layout_height="?attr/actionBarSize"
        android:background="?attr/colorPrimary"
        app:popupTheme="@style/AppTheme3.PopupOverlay" />

</android.support.design.widget.AppBarLayout>

<!-- your views will be here, you can add nestedscrollview,layouts etc. -->
<include layout="@layout/content_register" />

</android.support.design.widget.CoordinatorLayout>


发布您的xml和代码,请=)感谢您的快速回答,但在我的例子中,TextInputLayout中有AutoCompleteTextView,它向requestFocus(微调器材料)显示了focusTry中的问题;使用我的代码requestFocus向微调器请求焦点时会发生什么?它只是没有焦点?好的,我将使用您使用的微调器实现一个表单,如果找到解决方案,我将向您发送消息。如果您找到了,请给我发消息=)