2015-10-19 44 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()方法。