Java Android EditText.setHint在片段中不工作
我为我实现的滑动菜单提供了一个片段,我在其中使用的EditText遇到了一个问题。不幸的是,每当我在滑动菜单的编辑文本中键入内容时,提示仍然会显示。因此,我试图找到一种解决方法,因此,如果EditText中没有任何内容,我基本上将提示设置为nothing,但这根本不起作用。另一个代码根据文本启用或禁用按钮,但它确实起作用。这对我来说是个谜 它在做什么: 我的解决方法:Java Android EditText.setHint在片段中不工作,java,android,android-edittext,fragment,Java,Android,Android Edittext,Fragment,我为我实现的滑动菜单提供了一个片段,我在其中使用的EditText遇到了一个问题。不幸的是,每当我在滑动菜单的编辑文本中键入内容时,提示仍然会显示。因此,我试图找到一种解决方法,因此,如果EditText中没有任何内容,我基本上将提示设置为nothing,但这根本不起作用。另一个代码根据文本启用或禁用按钮,但它确实起作用。这对我来说是个谜 它在做什么: 我的解决方法: public void onActivityCreated(Bundle savedInstanceState) {
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
dbHandler = new DatabaseHandler(getActivity());
final Button addBtn = (Button) getView().findViewById(R.id.btnAddPlaylist);
final EditText txtPlaylistName = (EditText) getView().findViewById(R.id.txtPlaylist);
txtPlaylistName.addTextChangedListener(new TextWatcher() {
@Override
public void beforeTextChanged(CharSequence s, int start, int count, int after) {
}
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
boolean hasContent = !String.valueOf(s).trim().isEmpty();
addBtn.setEnabled(hasContent);
txtPlaylistName.setHint((hasContent) ? "Create new Playlist..." : "");
}
@Override
public void afterTextChanged(Editable s) {
}
});
}
如果EditText为空,而不是包含文本,则必须使用字符串调用
setHint
。在代码段中,您有:
txtPlaylistName.setHint((hasContent) ? "Create new Playlist..." : "");
这暗示即使很难你仍然有一些内容
@Override
public void onTextChanged(CharSequence s, int start, int before, int count) {
boolean hasContent = (count != 0);
addBtn.setEnabled(hasContent);
txtPlaylistName.setHint((hasContent) ? null : "Create new Playlist...");
}
您可以向布局容器添加提示,它将按预期显示。这是为动态创建的EditText添加提示的方法。 希望有人能从中受益
TextInputLayout textInputLayout = holder.itemViewfindViewById(R.id.value_text);
textInputLayout.setHint(your_value.getTitle());
这肯定比我之前做的更有效率,但这并不能真正改变结果。按钮禁用和启用没有任何问题,只是EditText有一些非常错误的地方。当然,它必须是相反的。完全搞砸了。然而,它仍然不起作用,但我发现了问题。我在xml布局中设置了提示,出于某种原因,它在现有提示后面设置了另一个提示。我摆脱了那个暗示,以编程的方式做了所有的事情,这就解决了它。谢谢你的帮助。也许你能给出正确的答案。但是,请添加一些代码工作方式的说明或解决问题。如果您在TextInputLayout中使用EditText,则需要更改TextInputLayout not Edit的属性:
TextInputLayout textInputLayout = holder.itemViewfindViewById(R.id.value_text);
textInputLayout.setHint(your_value.getTitle());