- android - 多次调用 OnPrimaryClipChangedListener
- android - 无法更新 RecyclerView 中的 TextView 字段
- android.database.CursorIndexOutOfBoundsException : Index 0 requested, 光标大小为 0
- android - 使用 AppCompat 时,我们是否需要明确指定其 UI 组件(Spinner、EditText)颜色
我的应用程序使用风格化的 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/
我是一名优秀的程序员,十分优秀!