由于我的应用程序没有任何不由 UI 表示的数据,因此我尝试读取 UI 小部件,以便在屏幕旋转等事件发生时恢复底层“模型”对象的状态。它似乎不适用于 EditText,但适用于 Spinners,这似乎很奇怪。以下是一些代码片段:
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
....
metalSpinner = (Spinner) findViewById(R.id.metal_spinner);
....
lengthText = (EditText) findViewById(R.id.length_edittext);
....
createAndInitializeModel();
}
private void createAndInitializeModel() {
vdropModel = new VdropModel();
....
String al = (String) (metalSpinner.getSelectedItem());
vdropModel.setAlum(al.equals("Aluminum"));
....
if (!(lengthText.getText().toString().equals(""))) {
vdropModel.setLengthInFeet(Double.parseDouble(lengthText.getText()
.toString()));
}
}
由于某些对我来说并不明显的原因,createAndInitializeModel() 中的“if”语句在屏幕方向更改发生后将始终评估为 false,即使小部件仍在显示一个值,并且 vdropModel 也不会恢复。但是 Spinner 小部件的值确实会恢复。这对我来说没有意义,有什么想法吗?