TableLayout не отображается при восстановлении из savedInstanceState - PullRequest
0 голосов
/ 17 июня 2020

У меня есть tableLayout во фрагменте, который ничего не показывает, когда информация, используемая для заполнения ячеек, взята из пакета savedInstanceState из OnCreateVIew ().

@Override
    public View onCreateView(LayoutInflater inflater, ViewGroup container,
                             Bundle savedInstanceState) {
            View rootView = initializeViews(inflater,container);

        if (savedInstanceState!= null){
            cellsTextArrayList = savedInstanceState.getStringArrayList("extractedTextEt");
            for (String word: cellsTextArrayList){
                addRow(word);
            }
        }

            return rootView;

    }




private void addRow(String word){
        final TableRow tr = new TableRow(getActivity().getApplicationContext());
        final View view = LayoutInflater.from(getActivity().getApplicationContext()).inflate(R.layout.cell_layout, null);
        EditText actualCell = view.findViewById(R.id.cell_text);
        actualCell.setText(word);

        tr.addView(view);
        tableLayout.addView(tr);

    }


@Override
    public void onSaveInstanceState (Bundle outState)
    {
        cellsTextArrayList.add("first");
        cellsTextArrayList.add("second");
        cellsTextArrayList.add("third");
        outState.putStringArrayList("extractedTextEt", cellsTextArrayList);
        super.onSaveInstanceState(outState);
    }
* 1003 saveInstanceState, метод addRow () не работает. Я запустил код в Activity, и он сработал, поэтому я думаю, что это связано с жизненным циклом фрагмента.

1 Ответ

0 голосов
/ 17 июня 2020

с использованием onActivityCreated во фрагменте.

@Override
public void onActivityCreated(Bundle savedInstanceState) {
    super.onActivityCreated(savedInstanceState);
    ...
    if (savedInstanceState != null) {
        //Restore the fragment's state here
    }
}

, а затем в действии, вы должны сохранить экземпляр фрагмента в onSaveInstanceState () и восстановить в onCreate ().

class MyActivity extends Activity {

    private MyFragment 

    public void onCreate(Bundle savedInstanceState) {
        ...
        if (savedInstanceState != null) {
            //Restore the fragment's instance
            mMyFragment = getSupportFragmentManager().getFragment(savedInstanceState, "myFragmentName");
            ...
        }
        ...
    }

    @Override
    protected void onSaveInstanceState(Bundle outState) {
        super.onSaveInstanceState(outState);

        //Save the fragment's instance
        getSupportFragmentManager().putFragment(outState, "myFragmentName", mMyFragment);
    }

}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...