我在一个带有几个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 :(得分:1)
解决。需要在片段onResume()
方法中获取和设置值,而不是其onActivityCreated()
方法。