しばらく探していましたが、報告されたバグのほとんど (かなりの数があります) は、android.support.design.widget.TextInputLayout
このバグとは少し異なっていると思います。少なくとも、私は他のほとんどのバグを解決しましたが、これには苦労しています。私は現在、このようなFragment
いくつかの活動を行っていますTextInputLayout
<android.support.design.widget.TextInputLayout
android:id="@+id/input1"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint1"
android:inputType="numberSigned" />
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/input2
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint2"
android:inputType="numberSigned"/>
</android.support.design.widget.TextInputLayout>
<android.support.design.widget.TextInputLayout
android:id="@+id/input3"
android:layout_width="match_parent"
android:layout_height="wrap_content">
<EditText
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:hint="@string/hint3"
android:inputType="numberSigned">
</android.support.design.widget.TextInputLayout>
そして、いくつかの外部条件 (重要ではない) を満たした後、前述のフラグメントを非表示にする別のフラグメント (100% 画面) を開いて表示します。この新しいフラグメントが、その特定のケースで必要ないくつかの追加フィールドを要求することに疑問を持っている場合に備えて。これは、新しい の作成を処理するコードですFragment
。
Fragment2 fragment2 = new Fragment2();
FragmentTransaction transaction = getActivity().getSupportFragmentManager().beginTransaction()
.replace(((ViewGroup) getView().getParent()).getId(), fragment2);
transaction.addToBackStack(Fragment1.class.getSimpleName());
transaction.commit();
しかし問題は、最初のフラグメントに戻るとき(戻るボタンを押す、ツールバー/アクションバーのホームボタンなど)です。私のすべてがTextInputLayouts
それらに挿入されたテキストを失います。EditText
これは非常に厄介で、マテリアル デザインへの移行の前に行ったように、 のみで作業している場合には発生しませんでした。
FragmentTransaction
さらに、 を使用してフラグメントを置き換える代わりに、新しい を開始すると、これは起こりませんActivity
。残念ながら、これは私たちが本当に望んでいるものではありません。そして、この種の回避策を実行する必要はありません。
何か案は?これは誰かに起こりましたか?