私は、複数の断片を保持し、示す活動を持っています。保存されたインスタンスからフラグメントが復元されたときに、editTextがテキストを自動入力しないようにするにはどうすればよいですか?
私がフラグメントを再入力すると、すべてのeditTextのテキストが自動的に塗りつぶされます。すべてのフィールドで同じテキストが表示されます。
例:
開き断片二つeditTextsテキスト記入:
CustomEditText1:[______]
CustomEditText2:[_acb__]
CustomEditText3:[_qwe__]
クリック戻るボタンを押して、フラグメントを再入力してください
CustomEditText1:[_qwe__]
CustomEditText2:[_qwe__]
CustomEditText3:[_qwe__]
これはフラグメントの私の上書き方法である:私はEDITTEXTがオーバーライド内のブレークポイントでテキストを設定していることが確認でき、デバッグすることで
public AddBookingFragment() {
// Required empty public constructor
}
@Override
public void onAttach(Context context) {
super.onAttach(context);
tabsActivity = (TabsActivity) getActivity();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.fragment_add_booking, container, false);
lastNameEditText = (NASEditText) view.findViewById(R.id.nas_add_booking_last_name);
pnrEditText = (NASEditText) view.findViewById(R.id.nas_add_booking_pnr);
addButton = (NASButton) view.findViewById(R.id.nas_add_booking_add_button);
scanButton = (NASButton) view.findViewById(R.id.nas_add_booking_scan_button);
confirmationBox = (LinearLayout) view.findViewById(R.id.nas_add_booking_confirmation_box);
confirmationText = (NASHeaderAndSubtext) view.findViewById(R.id.nas_add_booking_confirmation_text);
confirmationBox.setVisibility(View.GONE);
bindButtons();
FontHelper.setFont(container, tabsActivity);
return view;
}
OnTextChanged 。
これは、そのブレークポイントからのスタックトレースです:
(NASEditTextは私のカスタムビューである)
2つの問題/質問:私は充填から活動/フラグメント/ EDITTEXTを防ぐことができますどのように
- フラグメントが復元されたときにフィールドのテキストに表示されますか?
- すべてのフィールドで同じテキストが入力されるのはなぜですか?
恐らく保存された状態をどこかに復元します。フラグメントのコードを表示する –
@SergeyGlotovコードを見てください。私は何も復元していない。 Androidはbackstack afaikに追加された断片のためにeditTextの状態を自動的に保存しています... – Otziii
@SergeyGlotov AndroidはEditTextの状態を別々に復元します。問題の解決策は、EditTextをサブクラス化し、そこにsetText( "")を使ってonRestoreSavedStateメソッドを上書きすることです。しかし、再び、これはハックな解決策です。 – Slugge