天天看點

Android開發技術點1——Fragment中EditText文字的記憶性

最近開發平闆上的項目比較多,使用Fragment的頻率也增加了,不可避免的在fragment 中使用到了EditText,在使用過程中出現了這樣一種情況,

第一次add Fragment時,給EditText指派後"value1",popBackStack()後,重新add 這個Fragment,并且給EditText指派為“value2”,可是不可思議的事情發生了,頁面上顯示EditText仍然為“value1”,代碼示例:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        Log.i(TAG, "****>>>> onCreateView");
        view = inflater.inflate(R.layout.fragment_patrol_task_detail, container, false);
        String value = getArguments().getString("Value");
        mEditText.setText(value);
        return view;
    }
           

在onCreateView中為EditText指派,仿佛EditText有了記憶性,其實這時因為對Fragment的生命周期了解不透徹導緻的問題:

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
        Log.i(TAG, "****>>>> onCreateView");
        view = inflater.inflate(R.layout.fragment_patrol_task_detail, container, false);
        return view;
    }

    @Override
    public void onResume() {
        super.onResume();
        Log.i("PatrolTaskDetail", "****>>>> onResume");
        String value = getArguments().getString("Value");
        mEditText.setText(value);
        initView();
    }
           

改為在onResume中對EditText指派就可以解決了。