Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/213.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 旋转和反压后,所有EditText都会填充来自一个EditText的数据_Java_Android_Fragment - Fatal编程技术网

Java 旋转和反压后,所有EditText都会填充来自一个EditText的数据

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

我的应用程序正在使用样式化的EditText字段,这导致我在每个需要的布局中使用自定义包含的RelativeLayout和EditText。EditText都具有相同的id,这似乎是导致此问题的原因: 我有一个包含多个EditText的表单,所有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\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>