【发布时间】:2015-07-09 21:26:42
【问题描述】:
见下面Activity:
public class MainActivity extends ActionBarActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
LinearLayout linearLayout = (LinearLayout) findViewById(R.id.root);
for (int i = 0; i < 8; i++) {
EditText editText = (EditText) LayoutInflater.from(this).inflate(R.layout.edittextlayout, null);
editText.setText("#" + i);
linearLayout.addView(editText);
}
}
}
布局R.layout.activity_main:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
<LinearLayout
android:id="@+id/root"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">
</LinearLayout>
</LinearLayout>
和布局R.layout.edittext_layout:
<?xml version="1.0" encoding="utf-8"?>
<EditText xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content" />
启动应用程序后,它看起来像我期望的那样:每个EditText 都被它的索引填充。
旋转设备后,Activity 看起来像这样:
所有EditTexts 都在那里,但它们都包含相同的文本。
更让我困惑的是,当使用
以编程方式创建EditTexts 时,这不会发生
EditText editText = new EditText(this)
而不是从布局中膨胀它。
那里发生了什么?
您可以查看我的示例并亲自尝试here。
编辑:这不是 this question 的重复,因为在我的情况下,EditText 中的文本不会翻倍,而是在不同的 EditTexts 之间混淆。
【问题讨论】:
-
@B.Kemmer 我不知道你所说的“遇到 onResume”是什么意思。
-
@B.Kemmer 没有进一步的参考,我贴的代码是完整的,没有遗漏。
-
横向和纵向使用不同的xml吗?
-
我用这个 android:configChanges="orientation|screenSize" 运行你的代码,它可以工作。它是否有效?
标签: android android-layout android-edittext