刷新片段并更改文本字段

时间:2015-10-19 14:42:19

标签: android android-fragments android-edittext

我在一个带有几个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"));
    }
}

1 个答案:

答案 0 :(得分:1)

解决。需要在片段onResume()方法中获取和设置值,而不是其onActivityCreated()方法。