Warum funktioniert mein EditText nicht Ihren Zustand speichern (meistens Text)?
So EditTexts sollten speichern Sie Ihren Text beim ändern der Ausrichtung.
In diesem speziellen Fragment, nicht. Warum ist das so?
mein Fragment:
public class LoginFragment extends Fragment {
/**
* @param inflater
* @param container
* @param savedInstanceState
* @return
* @see android.support.v4.app.Fragment#onCreateView(android.view.LayoutInflater,
* android.view.ViewGroup, android.os.Bundle)
*/
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.login, container, false);
}
/**
*
* @see android.support.v4.app.Fragment#onStart()
*/
@Override
public void onStart() {
super.onStart();
getView().findViewById(R.id.login_ok).setOnClickListener(
new OnClickListener() {
public void onClick(View v) {
startActivity(new Intent(getActivity(),
StartActivity.class));
}
});
}
}
Meine edittexts in xml:
<EditText
android:id="@+id/login_user"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/roundedcorner"
android:ems="10"
android:hint="@string/email"
android:inputType="textEmailAddress"
android:padding="8dp" >
<requestFocus />
</EditText>
<EditText
android:id="@+id/login_pw"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginTop="8dp"
android:background="@drawable/roundedcorner"
android:ems="10"
android:hint="@string/password"
android:inputType="textPassword"
android:padding="8dp" />
Dies ist die onCreate-Methode meiner Tätigkeit:
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_login);
FragmentManager fm = getSupportFragmentManager();
FragmentTransaction ft = fm.beginTransaction();
ft.add(R.id.login_frame, new LoginFragment());
ft.commit();`
- Wie ist das fragment Hinzugefügt wird, um die Aktivität?
- zuerst erklärte ich es in xml, aber jetzt ive auch versucht, um es im code auf ein frame-Layout. Ill post den code in eine Sek als edit auf meine Frage.
- Ich glaube, es sollte ziemlich nahtlos, wenn das fragment Hinzugefügt wird, die in der xml.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Okay also ich hatte das problem auch, da habe ich meine-Fragment mit einer FragmentTransaction in ein FrameLayout(die hatte eine eindeutige ID).
Nun habe ich erklärte mein Fragment wieder in die XML-Daten mit einer eindeutigen ID und es funktioniert.
Kann ich nicht wirklich erklären, warum es nicht funktioniert, wenn Sie es mit einem FragmentTransaction, wenn der container hat eine eindeutige ID, aber wenigstens funktioniert es jetzt.
Die Aktivität wird neu erstellt, wenn sich die Ausrichtung ändert sich, das ist richtig.
Allerdings ist es nicht nötig, zu behandeln, die UI-Elemente " Zustand:
Aus:
http://developer.android.com/guide/components/activities.html#SavingActivityState
Hinweis: Wenn Sie wollen, um die Erhaltung der EditText Wert, auch wenn der Benutzer die ZURÜCK-Schaltfläche, benötigen Sie ein persistenet Speicher. onSaveInstanceState nicht aufgerufen werden.
Hier ein einfaches Beispiel (EditText Wert erhalten):
Den .XML-Datei
setRetainInstance(true)
und speichern Sie den Text in einer Klassen-variable, aber das ist ziemlich hässlich.Einen einfachen Weg, um sicherzustellen, dass Ihre TextEdit und TextView-Feldern erhalten Sie, Ihre Inhalte, Ihre freezesText Attribut.