【发布时间】:2020-06-17 01:33:13
【问题描述】:
我在片段中有一个 tableLayout,当用于填充单元格的信息取自 OnCreateVIew() 的 savedInstanceState 包时,它没有显示任何内容
@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);
}
cellTextArrayList 正在从 savedInstanceState 对象中恢复,addRow() 方法不起作用。我在一个 Activity 上运行了代码并且它工作了,所以我认为这与 Fragment 生命周期有关。
【问题讨论】:
标签: android android-fragments restore android-tablelayout