Android 片段内带有EditText的自定义LinearLayout
如果你像下面提到的那样一步一步地做,你就会理解我的问题(对不起,我不能用其他方式让你理解)。这可能令人困惑。但是,我相信如果你读一次,你就会明白Android 片段内带有EditText的自定义LinearLayout,android,android-layout,android-fragments,Android,Android Layout,Android Fragments,如果你像下面提到的那样一步一步地做,你就会理解我的问题(对不起,我不能用其他方式让你理解)。这可能令人困惑。但是,我相信如果你读一次,你就会明白 创建一个新的android项目,然后创建两个片段。你现在会 有 a。MainActivity.java b。FirstFragment(FirstFragment.java)及其xml 文件(first_fragment.xml) c。SecondFragment(SecondFragment.java)及其xml 文件(second_fragment
public class FormRowNew extends LinearLayout {
public FormRowNew(Context context, AttributeSet attrs) {
super(context, attrs);
initView();
}
private void initView() {
View.inflate(getContext(), R.layout.form_row, this);
}
}
其中的xml文件(form_row)类似于:
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout
xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="vertical">
<EditText
android:id="@+id/editText"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:text="eeeee"/>
</LinearLayout>
类似地,从FirstFragment加载相同ID(rlRootLayout)的第二个片段,如下所示
secondFragment blankFragment = new secondFragment();
getActivity().getSupportFragmentManager().beginTransaction()
.addToBackS tack(null).replace(R.id.rlRootLayout, blankFragment)
.commit();
在这里,我将从FirstFragment向MainActivity添加SecondFragment
at ID(rlRootLayout)
问题:-运行应用程序并转到前面提到的页面:
MainActivity ->
FirstFragment ->
Change something in BOTTOM FormRow(like add some text in EditText) ->
SecondFragment ->
FirstFragment.
现在,请参见FirstFragment中的自定义类(FormRow)。
无论我们在底部FormRow类中添加了什么,都会自动添加到顶部FormRow中。我找不到发生这种情况的原因。即使我对top FormRow不做任何操作,当我从SecondFragment返回时,它也会根据底部进行更改。
请帮忙 在添加第二个片段时,将文本保存在editText中。然后设置保存的文本,同时从第二个返回到第一个
@覆盖
ViewStateRestored上的公共无效(@Nullable Bundle savedinStateCState){
super.onViewStateRestored(savedInstanceState);
//设置编辑文本
}
调用。该行为是由于编辑文本的id造成的。当第一个片段在从第二个片段返回时膨胀布局时,它通过使用它的id分配值来编辑文本。因此在这种情况下,两个
EditText
都具有相同的id,因此它为两个EditText的分配相同的值。这一个帮助了我@Arjun
secondFragment blankFragment = new secondFragment();
getActivity().getSupportFragmentManager().beginTransaction()
.addToBackS tack(null).replace(R.id.rlRootLayout, blankFragment)
.commit();
MainActivity ->
FirstFragment ->
Change something in BOTTOM FormRow(like add some text in EditText) ->
SecondFragment ->
FirstFragment.