2015-03-26 3 views
1

У меня есть фрагмент для скользящего меню, который я реализовал, и у меня возникла проблема с EditText, который я использую в нем. К сожалению, всякий раз, когда я печатаю что-то в EditText в моем скользящем меню, подсказка все же отображается. Поэтому я попытался найти обходной путь, поэтому я в основном не делал намека ни на что, если в EditText ничего нет, но это не работает вообще. Другой код, который включает или отключает кнопку на основе текста, действительно работает. Для меня это загадка.Android EditText.setHint не работает во фрагменте

Что он делает:

http://i.stack.imgur.com/9DEPN.png

Мой обходной путь:

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) { 

      } 
     }); 
    } 
+0

Это, безусловно, более эффективно, чем то, что я делаю, но это не меняет исход , Кнопка отключает и включает без каких-либо проблем, есть что-то очень неправильное с EditText. – user3002449

ответ

0

вы должны вызвать setHint со строкой, если ваш EditText пуст, не, если он содержит текст. В вашем фрагменте кода, у вас есть:

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..."); 
} 
+0

Конечно, это должно быть наоборот. Полностью перепутал это. Однако он все еще не работал, но я нашел проблему. Я установил подсказку в макете xml и по какой-то причине установил еще один намек на существующий намек. Я избавился от этого намека и сделал все программно и исправил его. Спасибо за вашу помощь. – user3002449

Смежные вопросы