gpt4 book ai didi

android-layout - 为什么在使用 Kotlin 中的后退按钮导航到另一个片段并返回后片段中的 EditText 显示相同的值?

转载 作者:行者123 更新时间:2023-12-02 12:52:38 24 4
gpt4 key购买 nike

我是 Android 开发和 Kotlin 的新手。我遇到了这个让我感到困惑的问题。

我在片段 A 中有 2 个 EditText 元素,每个元素都有不同的文本。当我使用后退按钮导航到片段 B 并再次返回到片段 A 时,两个 EditText 控件显示相同的值?!我不明白为什么。

屏幕转储:

Step 1 - Fragment A with DIFFERENT values

Step 2 - Fragment B

Step 3 - Fragment A now with SAME values after back navigation from Fragment B

该解决方案具有 2 个片段(片段 A 和片段 B)的单一活性。解决方案可从 Github 获得:https://github.com/MIT-bits/singleactivity

我使用 NavGraph 在片段 A 和 B 之间导航。

片段 A 正在重用带有 EditText 的 XML 布局文件 (custom_view.xml)。每个 editText 值都在 Fragment A onViewCreated 方法中设置(见下文)

AFragment.kt

val data = arrayOf("Text A", "Text B", "Text C")

override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
super.onViewCreated(view, savedInstanceState)

view1.editText.setText(data[0])
view2.editText.setText(data[1])
}

fragment_a.xml
<?xml version="1.0" encoding="utf-8"?>
<ScrollView
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
android:layout_width="match_parent"
android:layout_height="match_parent"
tools:context=".AFragment">

<LinearLayout
android:id="@+id/createWhatAboutLinearLayout"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:orientation="vertical">

<include android:id="@+id/view1" layout="@layout/custom_view"></include>

<include android:id="@+id/view2" layout="@layout/custom_view"></include>

</LinearLayout>

</ScrollView>

custom_view.xml
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="match_parent"
xmlns:tools="http://schemas.android.com/tools"
xmlns:app="http://schemas.android.com/apk/res-auto"
>

<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:background="#999"
android:textSize="18sp"
android:textColor="#111"
android:typeface="normal"
android:layout_margin="20dp"
android:padding="10dp"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Text" />

</androidx.constraintlayout.widget.ConstraintLayout>

有人能看到我做错了什么或遗漏了什么吗?

任何输入都是有值(value)的...

最佳答案

添加属性 android:saveEnabled="false"在编辑文本中

<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:inputType="textPersonName"
android:background="#999"
android:textSize="18sp"
android:textColor="#111"
android:typeface="normal"
android:layout_margin="20dp"
android:padding="10dp"
android:saveEnabled="false"
app:layout_constraintEnd_toEndOf="parent"
app:layout_constraintStart_toStartOf="parent"
app:layout_constraintTop_toTopOf="parent"
tools:text="Text" />

关于android-layout - 为什么在使用 Kotlin 中的后退按钮导航到另一个片段并返回后片段中的 EditText 显示相同的值?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59586068/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com