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