如何解决旋转设备时如何不丢失EditText内容-EditText位于RecyclerView项内部
我有2种布局的RecyclerView。在第一个RecyclerView项中有一个EditText。但是,当我旋转设备时,EditText会丢失数据。 (这就是为什么我们使用ViewModel的原因。)我应该将ViewModel用于适配器吗? (一个很好的例子:))
解决方法
要了解这种行为,您需要了解 Activity Life Cycle
,他们具有丰富的知识并试图记住它,让我简要说明一下。
原因
已经声明,**只要屏幕旋转,活动就会被销毁和重新创建,这是由于EditTexts丢失数据(丢失状态)
解决方案
有两种解决方案,
- 使用片段
- 或尝试
onSaveInstanceState
我只关注第二种方法,它将告诉您如何解决此问题
解决方案2
public class MainActivity extends AppCompatActivity {
EditText editTextTest;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
editTextTest = findViewById(R.id.editTextTest);
if (savedInstanceState != null) {
testText = savedInstanceState.getString("editTextTest");
//Your State Restore Here
editTextTest.setText(testText);
}
}
@Override
protected void onSaveInstanceState(Bundle outState{
super.onSaveInstanceState(outState);
//Your State Sate here
outState.putString("editTextTest",text);
}
}
,
因此,当配置发生更改时会发生什么情况,例如当设备从横向旋转到纵向或反向旋转时,表示Android操作系统会销毁并重新创建活动。即onDestroy()> onCreate(),要处理此问题,您可以有2个选项
- Activity的onSaveInstanceState方法用于存储您不希望在配置更改时丢失的属性,并在onRestoreInstanceState()或onCreate()中还原这些属性
How to save an activity state using save instance state?
https://guides.codepath.com/android/Handling-Configuration-Changes#recyclerview
https://developer.android.com/guide/topics/resources/runtime-changes
-
您还可以在清单文件中指定您不希望在配置更改的情况下重新启动活动,您将通过android:configChanges手动处理它
-
您可以使用ModelView处理此类情况。 https://guides.codepath.com/android/Handling-Configuration-Changes#leveraging-viewmodels
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。