Java 旋转和反压后,所有EditText都会填充来自一个EditText的数据
我的应用程序正在使用样式化的EditText字段,这导致我在每个需要的布局中使用自定义包含的RelativeLayout和EditText。EditText都具有相同的id,这似乎是导致此问题的原因: 我有一个包含多个EditText的表单,所有EditText都具有相同的id,并包含如下内容:Java 旋转和反压后,所有EditText都会填充来自一个EditText的数据,java,android,fragment,Java,Android,Fragment,我的应用程序正在使用样式化的EditText字段,这导致我在每个需要的布局中使用自定义包含的RelativeLayout和EditText。EditText都具有相同的id,这似乎是导致此问题的原因: 我有一个包含多个EditText的表单,所有EditText都具有相同的id,并包含如下内容: <include android:id="@+id/person_name" android:layout_width="match_parent" android:lay
<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\u name).findViewById(R.id.my\u edit\u 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”,然后旋转此片段或从另一个屏幕导航回它,则所有包含的EditText显示相同的“a”文本。我曾尝试将所有字段数据保存在一个包中,并在onCreateView中加载savedInstanceState,但这只解决了旋转问题,而没有导航回该片段。我可以在每个布局中手动设置编辑文本布局,而不是使用include,但这将是最后的选择,因为这会使xml非常混乱。谢谢。我通过将包含的relativelayout替换为允许我删除默认EditText id的linearlayout,解决了这个问题。然后,我通过编程方式指定了EditText id
my_edit_text.setId(R.id.person_name);
以及使用每个编辑文本的唯一ID将ids.xml添加到我的res/值中
<?xml version="1.0" encoding="utf-8"?>
<resources>
<item name="person_name" type="id"/>
</resources>