0

私のアプリには UI で表されないデータがないため、画面の回転などのイベントが発生したときに、基になる「モデル」オブジェクトの状態を復元するために UI ウィジェットを読み取ろうとしました。EditText では機能しないようですが、奇妙に思えるスピナーでは機能します。いくつかのコード フラグメントを次に示します。

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 に答える