0

由于我的应用程序没有任何不由 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 小部件的值确实会恢复。这对我来说没有意义,有什么想法吗?

4

1 回答 1

0

在清单中,将活动的配置更改设置为此

android:configChanges="orientation"
于 2013-01-14T01:47:44.333 回答