gpt4 book ai didi

java - 所有 EditText 均在旋转并按回后填充来自一个 EditText 的数据

转载 作者:太空宇宙 更新时间:2023-11-04 14:30:59 25 4
gpt4 key购买 nike

我的应用程序使用风格化的 EditText 字段,导致我在每个需要的布局中使用包含的自定义相对布局和 EditText。 EditTexts 都有相同的 id,这似乎导致了这个问题:我有一个包含多个 EditText 的表单,它们都具有相同的 id,并且像这样包含在内:

<include
android:id="@+id/person_name"
android:layout_width="match_parent"
android:layout_height="wrap_content"
layout="@layout/custom_edit_text" />

其中我覆盖了包含RelativeLayout的id,以便稍后可以通过调用findViewById(R.id.person_name).findViewById(R.id.my_edit_text)来获取此editText。这是 EditText 布局的样式:

<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content" >

<EditText
android:id="@+id/my_edit_text"
android:layout_width="match_parent"
android:background="@color/White"
android:inputType="textPersonName" >
<requestFocus />
</EditText>

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignLeft="@id/my_edit_text"
android:layout_below="@id/my_edit_text"
android:src="@drawable/shadow_left" />

<ImageView
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignRight="@id/my_edit_text"
android:layout_below="@id/my_edit_text"
android:src="@drawable/shadow_right" />

</RelativeLayout>

如果用户在其中一个 EditText 中输入“a”,然后旋转该 fragment 或从另一个屏幕导航回该 fragment ,则所有包含的 EditText 都会显示相同的“a”文本。我尝试将所有字段数据保存在一个包中,并在 onCreateView 中加载保存的实例状态,但这只能解决旋转问题,而不能导航回该 fragment 。我可以在每个布局中手动添加 EditText 布局,而不是使用 include,但这将是最后的手段,因为它会使 xml 变得非常困惑。谢谢。

最佳答案

我通过用线性布局替换包含的相对布局解决了这个问题,允许我删除默认的 EditText id。然后我以编程方式分配 EditTexts id 调用

my_edit_text.setId(R.id.person_name);

并将 ids.xml 添加到我的 res/values 中,并为每个编辑文本添加唯一的 id。

<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="person_name" type="id"/>
</resources>

关于java - 所有 EditText 均在旋转并按回后填充来自一个 EditText 的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26150877/

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