Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/195.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
Java Android EditText.setHint在片段中不工作_Java_Android_Android Edittext_Fragment - Fatal编程技术网

Java Android EditText.setHint在片段中不工作

Java Android EditText.setHint在片段中不工作,java,android,android-edittext,fragment,Java,Android,Android Edittext,Fragment,我为我实现的滑动菜单提供了一个片段,我在其中使用的EditText遇到了一个问题。不幸的是,每当我在滑动菜单的编辑文本中键入内容时,提示仍然会显示。因此,我试图找到一种解决方法,因此,如果EditText中没有任何内容,我基本上将提示设置为nothing,但这根本不起作用。另一个代码根据文本启用或禁用按钮,但它确实起作用。这对我来说是个谜 它在做什么: 我的解决方法: public void onActivityCreated(Bundle savedInstanceState) {

我为我实现的滑动菜单提供了一个片段,我在其中使用的EditText遇到了一个问题。不幸的是,每当我在滑动菜单的编辑文本中键入内容时,提示仍然会显示。因此,我试图找到一种解决方法,因此,如果EditText中没有任何内容,我基本上将提示设置为nothing,但这根本不起作用。另一个代码根据文本启用或禁用按钮,但它确实起作用。这对我来说是个谜

它在做什么:

我的解决方法:

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());