如何正确从材料设计 TextInputLayout 中获取文本?
Posted
技术标签:
【中文标题】如何正确从材料设计 TextInputLayout 中获取文本?【英文标题】:How to get text from material design TextInputLayout correctly? 【发布时间】:2020-01-07 21:45:04 【问题描述】:我想使用自定义结束图标从材料设计的 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);
);
但我得到一个空文本,不是空的而是空的!!
【问题讨论】:
您的布局 XML 中的<TextInputLayout>
中有 <TextInputEditText>
吗?
【参考方案1】:
使用类似的东西:
<com.google.android.material.textfield.TextInputLayout
android:id="@+id/custom_end_icon"
...>
<com.google.android.material.textfield.TextInputEditText
../>
</com.google.android.material.textfield.TextInputLayout>
只需使用:
TextInputLayout textInputLayout = findViewById(R.id.custom_end_icon);
String text = textInputLayout.getEditText().getText();
您的问题在这里:
final TextInputEditText editText = new TextInputEditText(textInputCustomEndIcon.getContext());
您只是在创建TextInputEditText
的新实例,它不是TextInputLayout
中的TextInputEditText
。
【讨论】:
有没有办法获取/访问TextInputEditText
的TextInputLayout
,即TextInputLayout
的“内部”,类似于editText.getTextInputLayout
?
getText() 返回可编辑。您必须调用 getText().toString()。我不知道你为什么在布局上使用 getEditText()。我直接使用 TextInputEditText: ((TextInputEditText)getView().findViewById(R.id.etTheText)).getText().toString().【参考方案2】:
我和你有同样的问题。我就是这样解决的。在 String 变量中,我需要使用 .trim()
验证数据是否已正确插入 String vname=Name.getEditText().getText().toString().trim();
【讨论】:
你没有验证任何东西。你只是修剪你的字符串。【参考方案3】:第一个活动:
String uname = userV.getEditText().getText().toString();
Intent intent1 = new Intent(VolunteerActivity.this, VolunteerView.class);
intent1.putExtra("USER_NAME", uname);
startActivity(intent1);
第二个活动:
Bundle extras = getIntent().getExtras();
if (extras != null)
String uname = extras.getString("USER_NAME");
tv2.setText(uname);
【讨论】:
以上是关于如何正确从材料设计 TextInputLayout 中获取文本?的主要内容,如果未能解决你的问题,请参考以下文章
Android - 如何更改 TextInputLayout(材料组件)中的文本颜色?
如何在新的 android 设计库中使用 TextInputLayout