EditText raddouble in rotazione

Sto avendo un problema con un controllo EditText. Questo problema si sta verificando solo in questa particolare attività e non in altre attività con EditTexts. Ho rimosso tutte le chiamate setText per questo EditText e il problema persiste.

Sto installando Android 2.3.4 sul mio dispositivo mobile. È un Nexus S e Android in esecuzione. Nell'emulatore (con Android 2.2) questo problema non si verifica.

  • Rotazione Android ViewGroup in 3d
  • Android - come rendere RotateAnimation più liscia e "fisica"?
  • Come posso usare RotateAnimation per ruotare un cerchio?
  • Scorrimento di EditText all'interno di ScrollView
  • Rotazione di ImageView in Android <Livello API 11
  • Validazione su Modifica text
  • Quando ruotando il telefono, Android sostituisce automaticamente il text che era in EditText prima della rotazione. Non utilizzo SaveInstanceState per fare nulla. Android sta facendo questo stesso.

    Il mio problema:

    Supponiamo che la parola "test" sia in EditText. Quando ruotando il telefono, Android metterà "testtest" nel EditText quando l'attività viene ricreata. Ciò accade solo quando utilizzo la tastiera virtuale per digitare in EditText, non faccio clic sul button "finito" sulla tastiera virtuale, premo indietro per rimuovere la tastiera virtuale, quindi ruotando il dispositivo. Se utilizzi il button "finito" anziché il tasto di return, il problema non si verifica.

    Qualche idea? Come ho detto, non sto regolando il text. Tutte le righe che chiamano setText sono state commentate.

    Aggiornamento 1: Ho commentato tutto in questa attività, tranne il metodo onCreate (). Problema ancora presente.

    Aggiornamento 2: Ho creato una nuova attività. Questa nuova attività ha solo un metodo onCreate (). L'unica cosa nel metodo onCreate () è una chiamata a setContentView (utilizza lo stesso file di layout) e call super onCreate (). Il problema persiste. Sono stumped. L'unica cosa che posso immaginare è che c'è qualcosa di strano con il file di layout. Non ho idea di che cosa sarebbe.

    Aggiornamento 3: ho rimosso tutto fuori dal layout tranne il text EditText. Problema ancora presente.

    3 Solutions collect form web for “EditText raddouble in rotazione”

    Ho avuto un problema simile, ma lo vedo solo quando il completamento automatico è triggersto per il text EditText.

    Il mio lavoro era quello di distriggersre l'autocomplete. <EditText . . . android:inputType="textMultiLine|textNoSuggestions" />

    Ho trovato un lavoro intorno a te potrebbe provare. Funziona sottoclassificando EditText, catturando un paio di events e accettando solo le modifiche di text che si verificano quando viene visualizzata la tastiera, che dovrebbe filtrare eventuali modifiche non effettuate dall'utente digitando qualcosa. Non ho ancora idea di cosa possa causare questo.

     static class CustomEditText extends EditText{ boolean keyboardHidden = true; String mText = null; public CustomEditText(Context context) { super(context); // TODO Auto-generated constructor stub } public CustomEditText(Context context, AttributeSet attr) { super(context, attr); // TODO Auto-generated constructor stub } //This gets called for any text field change, regardless of where the change comes from //When the phone flips and tries to double the text we can catch it. //If the keyboard is hidden (meaning the user isn't typing anything) the strings should match protected void onTextChanged(CharSequence text, int start, int before, int after){ if(keyboardHidden && mText!=null && !text.toString().equals(mText)){ setText(mText); setSelection(mText.length()); } else mText = text.toString(); } //There's no way right now to directly check if the soft keyboard is displayed //On touch, the soft keyboard is displayed by default for EditText, so assume the keyboard is displayed from this point on public boolean onTouchEvent(MotionEvent event){ keyboardHidden = false; super.onTouchEvent(event); return true; } //On a back press we're removing the soft keyboard so set the flag back to true public boolean dispatchKeyEventPreIme(KeyEvent event){ if(event.getKeyCode() == KeyEvent.KEYCODE_BACK){ keyboardHidden = true; } return super.dispatchKeyEvent(event); } } 

    Per gestire le modifiche della rotazione, aggiungere il tuo android:configChanges manifesto android:configChanges :

      <activity android:name="yourActivity" android:configChanges="orientation"></activity> 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.