我读过一些Android文档,当我们旋转屏幕时,由于调用onCreate方法,用户输入的内容被破坏。所以我们需要保存/恢复代码,以防止旋转时数据丢失。我只是尝试了一个只有一个EditText的简单应用程序。在EditText中输入一些文本后,屏幕旋转后没有清除(破坏)。
屏幕旋转后EditText内容不被清除是正确的吗?为什么我们需要保存/恢复代码来进行屏幕旋转?
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".MainActivity">
<EditText
android:id="@+id/editTextTextPersonName"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_marginStart="76dp"
android:layout_marginTop="56dp"
android:ems="10"
android:inputType="textPersonName"
android:text="Name"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>
旋转后,我以为用户文本应该被清除。但是用户输入没有被清除。
2条答案
按热度按时间6qfn3psc1#
由于您为EditText提供了唯一的ID,因此Android将在保留EditText值的情况下为您处理方向。
如果您没有为EditText提供ID,则EditText值将被清除。
nc1teljy2#
在TextView和EditText的情况下。两者都有数据。当屏幕方向改变时,EditText中的数据保留,但TextView数据被清除。
从freezesText上的文档。这将有助于将数据保存在TextView中。
上述属性有助于处理EditText的行为。