В моем первом фрагменте у меня есть EditText
со значением. Проблема в том, что когда я перехожу к FragmentTwo
и возвращаюсь к FragmentOne
, EditText
(в FragmentOne
) теряет текст, который я вставил ранее. Я пытался сохранить его в onSaveInstanceState()
и извлечь в onViewStateRestored()
, но, похоже, он не хранит информацию, потому что onSaveInstanceState()
никогда не вызывается, а savedInstanceState
всегда равно нулю.
Это мой метод замены фрагмента
fragmentManager
?.beginTransaction()
?.setCustomAnimations(R.anim.slide_in_left, R.anim.slide_out_left, R.anim.slide_out_right, R.anim.slide_in_right)
?.replace(frame, MyFragment.newInstance(), tag)
?.addToBackStack(tag)
?.commit()
Это мой onSaveInstanceState()
в FragmentOne
:
override fun onSaveInstanceState(outState: Bundle) {
outState.putDouble(Constants.currentAmount, currentAmount)
super.onSaveInstanceState(outState)
}
Это мой onView Восстановлен в FragmentOne
:
override fun onViewStateRestored(savedInstanceState: Bundle?) {
super.onViewStateRestored(savedInstanceState)
if(savedInstanceState!= null) {
currentAmountSaved = savedInstanceState.getDouble(Constants.currentAmount)
}
}
Это моя спина в FragmentTwo
:
fragmentManager?.popBackStack()
Итак, моя цель - сохранить EditText
, перейти к FragmentTwo
, и когда я вернусь к FragmentOne
, то же самое EditText
будет со значением, которое я установлю при изменении Fragments
.
Это мой xml-файл из FragmentOne
(фрагмент, который я хочу восстановить)
<?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:id="@+id/contentView"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:clickable="true"
android:focusableInTouchMode="true"
android:orientation="vertical">
<View
android:id="@+id/fManageFundsHeaderLayout"
android:layout_width="match_parent"
android:layout_height="250dp"
android:background="@color/colorBackgroundToolbar"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintHorizontal_bias="0.0"
app:layout_constraintStart_toStartOf="parent" />
<include
android:id="@+id/addFundsComponent"
layout="@layout/component_manage_funds"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="24dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="@+id/fManageFundsHeaderLayout" />
</androidx.constraintlayout.widget.ConstraintLayout>