У меня есть фрагмент в действии с несколькими полями TextEdit. У меня есть метод, который отображает фрагмент, либо со стандартными значениями EditText, либо со значениями, полученными из базы данных.Обновить фрагмент с изменениями в текстовых полях
Но если фрагмент ранее показан, фрагмент не будет обновлять его самостоятельно новыми значениями в текстовых полях, если это отображается во второй раз.
Из того, что я собрал, это потому, что Android перерабатывает представления, поэтому я попытался сделать недействительным фрагмент, когда он отображается во второй раз, чтобы обновить его, но это не сработает.
Может ли кто-нибудь помочь?
В активности (ОБНОВЛЕНО)
public void showEditBirthdayFragment(boolean showExisting, int listIndex) {
if(showExisting) {
Birthday birthday = getBirthdayArray().get(listIndex);
SimpleDateFormat format = new SimpleDateFormat("dd.MM.yyyy");
String date = format.format(birthday.getBirthdate());
int day = Integer.parseInt(date.substring(0, 2));
int month = Integer.parseInt(date.substring(3,5));
int year = Integer.parseInt(date.substring(6));
Bundle bundle = new Bundle();
bundle.putString("name", birthday.getName());
bundle.putString("phone", birthday.getPhonenumber() + "");
bundle.putInt("day", day);
bundle.putInt("month", month);
bundle.putInt("year", year);
editBirthdayFragment.setArguments(bundle);
}
FragmentTransaction transaction = getFragmentManager().beginTransaction();
transaction.add(R.id.mainActivity, editBirthdayFragment, "editBirthdayFragment");
transaction.addToBackStack(null);
transaction.commit();
}
В фрагменте:
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
editTextName = (EditText) getActivity().findViewById(R.id.editTextName);
editTextPhone = (EditText) getActivity().findViewById(R.id.editTextPhone);
datePicker = (DatePicker) getActivity().findViewById(R.id.datePicker);
savedInstanceState = getArguments();
if(savedInstanceState != null) {
editTextName.setText(savedInstanceState.getString("name"));
editTextPhone.setText(savedInstanceState.getString("phone"));
datePicker.updateDate(savedInstanceState.getInt("year"), savedInstanceState.getInt("month"), savedInstanceState.getInt("day"));
}
}
Вы можете оставить весь свой код, потому что это не дает представление, как значения параметра – dex
вы должны использовать 'метод setArguments' для отправки значения' editBirthdayFragment' –
@MehulJoisar Обновленный мой код в настоящее время. Еще не повезло. – Petter