4

나는 여러 파편을 들고 보여주는 활동이있다.저장된 인스턴스에서 조각을 복원 할 때 editText에서 자동 채우기 텍스트를 방지하려면 어떻게해야합니까?

조각을 다시 입력하면 모든 editText에 텍스트가 자동으로 채워집니다. 모든 필드에 대해 동일한 텍스트가 사용됩니다.

예 :

열기 단편 두 editTexts 텍스트 채우
CustomEditText1 [______]
CustomEditText2 [_acb__]
CustomEditText3 [_qwe__]

클릭 뒤로 버튼을 클릭하고 단편을 다시 입력하십시오.
CustomEditText1 : [_qwe__]
CustomEditText2 [_qwe__]
CustomEditText3 [_qwe__]

이 프래그먼트 내 덮어 방법이다 : I가 EDITTEXT가 오버라이드 내부 breakpointing하여 텍스트 설정되어 있음을 알 수 디버깅 바이

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 . 이 Stacktrace
(NASEditText 내 사용자 지정보기이다)

두 문제/질문 : 내가 작성에서 활동/단편/글고 치기를 방지 할 수있는 방법

  1. 은 중단 점에서 스택 트레이스입니다 프래그먼트가 복원되면 필드의 텍스트에?
  2. 모든 입력란에 동일한 텍스트가 입력되는 이유는 무엇입니까?
+0

어딘가에 저장된 상태를 복원하는 것 같습니다. 프래그먼트의 코드를 보여주세요. –

+0

@SergeyGlotov 코드를보세요. 나는 아무것도 복원하지 못합니다. Android는 backstack afaik에 추가 된 조각에 대한 editText의 상태를 자동으로 저장합니다 ... – Otziii

+2

@SergeyGlotov Android는 EditText의 상태를 개별적으로 복원합니다. 문제의 해킹 해결책은 EditText를 서브 클래스 화하고 거기에 setText ("")를 사용하여 onRestoreSavedState 메소드를 겹쳐 쓰는 것입니다. 하지만 다시 말하지만, 이것은 해킹 된 해결책입니다. – Slugge

답변

5

친구의 도움으로 문제를 발견했습니다!

SaveEnabled는 Android의 editTexts에 기본적으로 true입니다. 당신의 EDITTEXT에
setSaveEnabled(false);
:


이 솔루션은 설정하는 것입니다.

모든 필드에서 마지막 값을 채우는 이유는 모르겠지만 ...

+0

이것은 XML에서도 할 수 있습니다. –

1

이 대답은 아니지만, 문제 해결

@Slugge에 의해 주석으로 :
재정의 사용자 정의 EDITTEXT의 onSaveInstanceState 방법을 텍스트를 취소/당신이에서 원하는 일을 그곳에.