如何正确从材料设计 TextInputLayout 获取文本?

Zia*_* H. 5 android material-design android-textinputlayout android-textinputedittext

我想使用自定义结束图标从材料设计的 TextInputLayout 获取文本。

我试图这样做:

TextInputLayout textInputCustomEndIcon = findViewById(R.id.editText);
final TextInputEditText editText = new TextInputEditText(textInputCustomEndIcon.getContext());

textInputCustomEndIcon
                .setEndIconOnClickListener(new View.OnClickListener() {
                            @Override
                            public void onClick(View view) {
                                if (editText.getText() != null) {
                                    String text = editText.getText().toString();

                                    Log.i("MainActivity", "setEndIconOnClickListener:"+ text);
                                }
                            }
                            });
Run Code Online (Sandbox Code Playgroud)

但我得到一个空文本,不是空而是空!!

Gab*_*tti 10

使用类似的东西:

<com.google.android.material.textfield.TextInputLayout
    android:id="@+id/custom_end_icon"
    ...>

    <com.google.android.material.textfield.TextInputEditText
       ../>

</com.google.android.material.textfield.TextInputLayout>
Run Code Online (Sandbox Code Playgroud)

只需使用:

TextInputLayout textInputLayout = findViewById(R.id.custom_end_icon);
String text = textInputLayout.getEditText().getText();
Run Code Online (Sandbox Code Playgroud)

你的问题在这里:

final TextInputEditText editText = new TextInputEditText(textInputCustomEndIcon.getContext());
Run Code Online (Sandbox Code Playgroud)

你只创造的一个新实例TextInputEditText,它是不是TextInputEditText里面的TextInputLayout

  • getText() 返回可编辑。您必须调用 getText().toString()。我不知道为什么你在布局上使用 getEditText() 。我直接使用 TextInputEditText:((TextInputEditText)getView().findViewById(R.id.etTheText)).getText().toString()。 (2认同)