2015-10-19 2 views
0

У меня есть фрагмент в действии с несколькими полями 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")); 
    } 
} 
+0

Вы можете оставить весь свой код, потому что это не дает представление, как значения параметра – dex

+0

вы должны использовать 'метод setArguments' для отправки значения' editBirthdayFragment' –

+0

@MehulJoisar Обновленный мой код в настоящее время. Еще не повезло. – Petter

ответ

0

решаемые. Необходимо получить и установить значения в методе onResume() вместо метода onActivityCreated().

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