目前我正在开发一个动态创建控件的Android应用程序。每次用户单击按钮时,按钮下方都会出现一个新的EditText,用户可以与EditText进行交互。但是,如果屏幕方向发生变化,则用户创建的EditText也会消失。
创建EditText的用户的代码示例:(位于onClick()中,p是基本layoutParamas,布局是位于按钮下方的LinearLayout)
EditText editText = new EditText(this);
layout.addView(buttonView, p);
想知道当屏幕方向发生变化时保存布局最简单的方法是什么,所以我不会丢失任何控件,或者我动态地创建控件错误。
感谢。
更新:通过覆盖onSaveInstanceState(),我能够保存一个对象,该对象包含用户有意添加的所有控件的列表。使用此列表,我能够在onCreate()中创建控件。
仍然很好奇是否有更简单的方法来完成此任务,因为我必须重构大量代码才能完全实现此方法。
答案 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);
}
如果您这样做,您的活动将仅在方向更改上重复使用,而不是销毁/重新创建。因此,您无需保存所有事情的状态。