Android Can';t在旋转更改中保存编辑文本值

Android Can';t在旋转更改中保存编辑文本值,android,Android,我有包含编辑文本的布局。当我旋转手机时,EditText中的值消失了。我已尝试使用saveInstanceState,但不起作用。saveInstanceState成功保存了我的EditText值,但EditText.setText无法设置为saveInstanceState捆绑包中的值。这是我的密码 碎片 class HelpFragment : Fragment() { private var _binding: FragmentHelpBinding? = null private va

我有包含编辑文本的布局。当我旋转手机时,EditText中的值消失了。我已尝试使用saveInstanceState,但不起作用。saveInstanceState成功保存了我的EditText值,但EditText.setText无法设置为saveInstanceState捆绑包中的值。这是我的密码

碎片

class HelpFragment : Fragment() {

private var _binding: FragmentHelpBinding? = null
private val binding get() = _binding

private var helpMessage: String? = ""

override fun onCreateView(
    inflater: LayoutInflater,
    container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    _binding = FragmentHelpBinding.inflate(inflater, container, false)
    return binding?.root
}

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    initViewClicked()
    helpMessage = savedInstanceState?.getString("helptext")
    if (!helpMessage.isNullOrEmpty()) {
        activity?.runOnUiThread {
            binding?.edtHelpMessages?.setText(helpMessage)
            Log.e("HelpFragment", "Help message $helpMessage")
        }
    }
}

override fun onSaveInstanceState(outState: Bundle) {
    super.onSaveInstanceState(outState)
    outState.putString("helptext", binding?.edtHelpMessages?.text.toString())
    Log.e("HelpFragment", "Save Instance Help message ${binding?.edtHelpMessages?.text.toString()}")
}

private fun initViewClicked() {
    binding?.layoutHelp?.setOnClickListener { hideKeyboard() }
}

private fun hideKeyboard() {
    val view: View? = activity?.currentFocus
    if (view != null) {
        val imm = activity?.getSystemService(Context.INPUT_METHOD_SERVICE) as InputMethodManager
        imm.hideSoftInputFromWindow(view.windowToken, 0)
    }
}
XML代码

<layout xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
tools:context=".ui.profile.faq.HelpFragment">

<ScrollView
    android:layout_width="match_parent"
    android:layout_height="match_parent">

    <androidx.constraintlayout.widget.ConstraintLayout
        android:id="@+id/layout_help"
        android:layout_width="match_parent"
        android:layout_height="wrap_content"
        android:clickable="true"
        android:focusableInTouchMode="true"
        android:focusable="true">

        <TextView
            android:id="@+id/tv_help"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginEnd="16dp"
            android:layout_marginTop="16dp"
            android:text="Tell us what happened"
            android:textSize="14sp"
            android:textColor="@android:color/black"
            android:fontFamily="@font/pra_medium"
            app:layout_constraintTop_toTopOf="parent"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"/>

        <TextView
            android:id="@+id/tv_help_detail"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginEnd="16dp"
            android:layout_marginTop="16dp"
            android:text="We will reply back to you as soon as possible, maximum within 24 hours."
            android:textSize="14sp"
            android:textColor="@android:color/black"
            android:fontFamily="@font/pra_light"
            app:layout_constraintTop_toBottomOf="@id/tv_help"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"/>

        <TextView
            android:id="@+id/tv_help_message"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginEnd="16dp"
            android:layout_marginTop="24dp"
            android:text="Your message"
            android:textSize="9sp"
            android:textColor="@color/colorGrey"
            android:fontFamily="@font/pra_regular"
            app:layout_constraintTop_toBottomOf="@id/tv_help_detail"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"/>

        <EditText
            android:id="@+id/edt_help_messages"
            android:layout_width="match_parent"
            android:layout_height="100dp"
            android:layout_marginStart="16dp"
            android:layout_marginEnd="16dp"
            android:layout_marginBottom="8dp"
            android:layout_marginTop="8dp"
            android:padding="12dp"
            android:background="@drawable/border"
            android:fontFamily="@font/pra_regular"
            android:inputType="textMultiLine"
            android:gravity="top|start"
            android:textSize="12sp"
            android:saveEnabled="true"
            app:backgroundTint="#29202020"
            app:layout_constraintTop_toBottomOf="@id/tv_help_message"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent" />

        <androidx.appcompat.widget.AppCompatButton
            android:id="@+id/btn_submit"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_marginStart="16dp"
            android:layout_marginEnd="16dp"
            android:layout_marginTop="16dp"
            android:layout_marginBottom="16dp"
            android:text="Submit"
            android:textSize="14sp"
            android:textAllCaps="false"
            android:textColor="@android:color/white"
            android:background="@color/colorPrimaryDark"
            app:layout_constraintTop_toBottomOf="@id/edt_help_messages"
            app:layout_constraintStart_toStartOf="parent"
            app:layout_constraintEnd_toEndOf="parent"
            app:layout_constraintBottom_toBottomOf="parent"/>

    </androidx.constraintlayout.widget.ConstraintLayout>
</ScrollView>

您是如何将该片段添加到活动的

如果您在xml中使用了
标记来显示帮助片段,那么请尝试为片段标记提供
ID
属性

如果您使用了片段管理器,则在添加/替换片段时尝试给出
标记名