Android:动态创建控件和方向更改

时间:2010-01-29 22:46:27

标签: android

目前我正在开发一个动态创建控件的Android应用程序。每次用户单击按钮时,按钮下方都会出现一个新的EditText,用户可以与EditText进行交互。但是,如果屏幕方向发生变化,则用户创建的EditText也会消失。

创建EditText的用户的代码示例:(位于onClick()中,p是基本layoutParamas,布局是位于按钮下方的LinearLayout)

    EditText editText = new EditText(this);
    layout.addView(buttonView, p);

想知道当屏幕方向发生变化时保存布局最简单的方法是什么,所以我不会丢失任何控件,或者我动态地创建控件错误。

感谢。

更新:通过覆盖onSaveInstanceState(),我能够保存一个对象,该对象包含用户有意添加的所有控件的列表。使用此列表,我能够在onCreate()中创建控件。

仍然很好奇是否有更简单的方法来完成此任务,因为我必须重构大量代码才能完全实现此方法。

1 个答案:

答案 0 :(得分:5)

尝试将此添加到清单文件中的<activity>标记:

android:configChanges="orientation|keyboardHidden"

然后在活动类中执行此操作:

@Override
public void onConfigurationChanged(final Configuration newConfig)
{
    // Ignore orientation change to keep activity from restarting
    super.onConfigurationChanged(newConfig);
}

如果您这样做,您的活动将仅在方向更改上重复使用,而不是销毁/重新创建。因此,您无需保存所有事情的状态。