1

多くの EditTexts を持つ巨大なフォームを持つアクティビティがあります。ユーザーが画面を縦向きから横向きに、またはその逆に回転すると、EditTexts 内のすべてのデータが失われます。向きを変えても失われないようにデータを保持する方法はありますか?

縦向きと横向きにそれぞれ 1 つずつ、2 つのレイアウトを作成しました。また、両方のレイアウトのすべてのビューに同じ ID を持っています。

前もって感謝します。

4

4 に答える 4

2

はい。以下のコードを使用して、EditTexts のデータを取得できます。

onCreate()メソッドでは、

 @Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    int ot = getResources().getConfiguration().orientation;
    switch (ot) {
    case Configuration.ORIENTATION_LANDSCAPE:
        setContentView(R.layout.<your_landscape_layout>);
        break;
    case Configuration.ORIENTATION_PORTRAIT:
        setContentView(R.layout.<your_portrait_layout>);
        break;
    }
    setButtonClickListeners();
}
}
@Override
public void onConfigurationChanged(Configuration newConfig) {
    super.onConfigurationChanged(newConfig);
    int ot = getResources().getConfiguration().orientation;
    switch (ot) {
    case Configuration.ORIENTATION_LANDSCAPE:

        setContentView(R.layout.<your_landscape_layout>);
        setButtonOnClickListeners();
        initializeViews();
        break;
    case Configuration.ORIENTATION_PORTRAIT:
        setContentView(R.layout.<your_portrait_layout>);
        setButtonOnClickListeners();
        initializeViews();
        break;
    }
}

@SuppressWarnings("deprecation")
@Override
public Object onRetainNonConfigurationInstance() {
    return super.onRetainNonConfigurationInstance();
}
 }

ではsetButtonOnClickListeners()、すべての を開始し、EditTextsinitializeViews()データを取得してEditTexts表示します。setText()

于 2013-06-27T11:01:25.820 に答える