Intereting Posts
Нормально ли для метода activity.onCreate () вызывать несколько раз Как вы делаете макеты для нескольких размеров экрана Android? Различия между Intent и PendingIntent Android Studio: установка завершилась неудачно, поскольку APK не был подписан Как отправить строку с помощью NFC с телефона Windows 8 на устройство Android Как получить прозрачный фон версии webView for 4.0 Android BroadcastReceiver при запуске – продолжайте работать, когда Activity находится в фоновом режиме Загрузить картинку в галерею эмулятора Android – прослушиватель OnClick в отдельном классе LocationClient класс не найден в google play services rev 22 Как оценить потенциальный доход от использования AdMob в приложении? Как узнать, выполнила ли Proguard свою работу Как смешивать / накладывать два mp3-файла в один mp3-файл (не конкатенировать) Установите абсолютное положение вида Добавление сервисов Google Play в Android Studio с использованием Gradle

EditText Settext не работает с фрагментом

У меня есть фрагменты для трех состояний экрана; Добавить, редактировать и просматривать. В «Добавить» я создаю объект и сохраняю его. В следующий раз я открою его в режиме просмотра и задаю имя объекта, используя

EditText entityName = (EditText) view.findViewById(R.id.entityName); entityName.setText(entity.getEntityname()); 

Я нажимаю кнопку редактирования в режиме просмотра, чтобы открыть режим редактирования. Здесь я меняю имя объекта и сохраняю его. Это возвращает меня к экрану просмотра. Но я считаю, что имя объекта не обновляется. Я отлаживаю и обнаруживаю, что entity.getEntityname() имеет правильное значение. Я не уверен, почему текст редактирования не принимает нового значения.

Есть идеи?

Примечание. Я использую версию Android 2.2.

Solutions Collecting From Web of "EditText Settext не работает с фрагментом"

В EditText появляется проблема с onCreateView текста в onCreateView . Таким образом, решение здесь – сбросить текст в onResume . Это работает.

Также есть проблема в onActivityCreated. Я перезагрузил содержимое edittext в onStart, и он работает. [Кредиты @savepopulation]

Как упоминалось ранее, EditText, похоже, имеет проблему с сбросом текста в onCreateView.

Это связано с тем, что, как только фрагмент создается, до момента удаления его из backstack его метод onResume будет вызываться, поскольку представление не создается снова.

Таким образом, решение здесь – сбросить текст в onResume. Это будет работать во все времена, даже если u заблокирует и разблокирует экран ur, пока этот фрагмент открыт, или вы возвращаетесь из другого фрагмента

Однако, если вы устанавливаете эти данные из комплекта, то лучше сказать, что значение в переменной экземпляра приводит к тому, что пакет может наступить null amd u может получить ненужные ошибки указателя, тогда

Также есть проблема в onActivityCreated. Я перезагрузил содержимое edittext в onStart, и он работает.

Согласно @TusharVengrulekar, вот как вы должны внедрить свой фрагмент

 public class ActionBar extends Fragment { private TextView lbl_title; private String title; @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { View view = inflater.inflate(R.layout.fragment_action_bar, container, false); title = "Contacts"; lbl_title = (TextView) view.findViewById(R.id.lbl_title); return view; } @Override public void onStart(){ super.onStart(); lbl_title.setText(title); } @Override public void onResume(){ super.onResume(); } } 

Есть несколько классов View в Android, которые должны сохранять свой статус при отсоединении их контейнера. Fragment.onViewCreated () следует вызывать перед View.onSaveInstanceState (). Поэтому, если вы установите значение в методе Fragment.onViewCreated (). Значение должно быть очищено в методе View.onRestoreInstanceState (Parcelable state).

Например, класс TextView, RecyclerView и т. Д. Вы можете прочитать код TextView.java:

  public Parcelable onSaveInstanceState() { Parcelable superState = super.onSaveInstanceState(); // Save state if we are forced to final boolean freezesText = getFreezesText(); boolean hasSelection = false; int start = -1; int end = -1; .... if (freezesText || hasSelection) { SavedState ss = new SavedState(superState); .... } .... } 

Есть параметры, чтобы контролировать, сохранять ли состояние: «freezesText» и «hasSelection». TextView не может быть выбран, поэтому hasSelection имеет значение false. Функция, getFreezesText (), возвращает false в классе TextView тоже. Таким образом, TextView не сохранит состояние. Код EditText.java:

  @Override public boolean getFreezesText() { return true; } 

EditText возвращает true, поэтому EditText должен сохранить состояние.

Там какой-то способ исправить эту ошибку:

1.implement EditText.getFreezesText () и вернуть false и очистить состояние select в EditText

2.implement onSaveInstanceState из EditText, возвращает null.

  public Parcelable onSaveInstanceState() { super.onSaveInstanceState(); return null; } 

3.use EditText.setSaveEnable (false);

4.add param в xml "saveEnable = 'false'"