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"));
}
}
你可以发表你的整个代码,因为这并没有给主意的值是如何设置 – dex
你应该使用'setArguments'方法值现在更新了我的代码发送到'editBirthdayFragment' –
@MehulJoisar 。仍然没有运气。 – Petter