Narrensicherer Umgang mit Fragment bei Orientierungsänderung
public class MainActivity extends Activity implements MainMenuFragment.OnMainMenuItemSelectedListener {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
FragmentManager fragmentManager = getFragmentManager();
FragmentTransaction fragmentTransaction = fragmentManager
.beginTransaction();
//add menu fragment
MainMenuFragment myFragment = new MainMenuFragment();
fragmentTransaction.add(R.id.menu_fragment, myFragment);
//add content
DetailPart1 content1= new DetailPart1 ();
fragmentTransaction.add(R.id.content_fragment, content1);
fragmentTransaction.commit();
}
public void onMainMenuSelected(String tag) {
//next menu is selected replace existing fragment
}
Ich habe ein Bedürfnis für die Anzeige von zwei Listen-Ansichten Seite an Seite ,im Menü auf der linken Seite und dessen Inhalt auf der rechten Seite,standardmäßig das erste Menü wird ausgewählt und sein Inhalt wird angezeigt, auf der rechten Seite.Das Fragment, das zeigt Inhalte ist wie folgt
public class DetailPart1 extends Fragment {
ArrayList<HashMap<String, String>> myList = new ArrayList<HashMap<String, String>>();
ListAdapter adap;
ListView listview;
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
if(savedInstanceState!=null){
myList = (ArrayList)savedInstanceState.getSerializable("MYLIST_obj");
adap = new LoadImageFromArrayListAdapter(getActivity(),myList );
listview.setAdapter(adap);
}else{
//get list and load in list view
getlistTask = new GetALLListTasks().execute();
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
View v = inflater.inflate(R.layout.skyview_fragment, container,false);
return v;
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putSerializable("MYLIST_obj", myList );
}
}
Den onActivityCreated und onCreateView heißt zweimal gibt es viele Beispiele gibt, die Verwendung von Fragmenten ,also ich bin Anfänger in diesem segment bin ich nicht beziehen, das Beispiel mit meinem problem .Ich brauche Narr Beweis Weg, um zu behandeln, Orientierung ändern, in einem besseren Weg.Ich habe NICHT deklariert android:configChanges in der manifest-Datei ,ich brauche die Aktivität zu zerstören und neu zu erstellen, so dass ich verwenden können, ein anderes layout im landscape-Modus.Bitte helfen Sie mit, einen workaround
InformationsquelleAutor der Frage user1811741 | 2012-11-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Erstellen Sie ein neues fragment jedes mal, wenn Sie drehen Sie den Bildschirm in Ihre Tätigkeit
onCreate();
Aber Sie behalten auch die alten mitsuper.onCreate(savedInstanceState);
. Also, vielleicht legen Sie tag und finden Sie das fragment, wenn es vorhanden ist, oder übergeben Sie null-bundle zu super.Dieser dauerte eine Weile zu lernen, und es kann wirklich sein, ein bi**** bei der Arbeit mit Sachen wie viewpager.
Ich würde empfehlen, Sie zu Lesen über Fragmente eine extra-Zeit, wie das genaue Thema wird behandelt.
Hier ist ein Beispiel, wie man Griff-Fragmente auf eine regelmäßige Ausrichtung ändern:
Aktivität:
Fragment:
InformationsquelleAutor der Antwort Warpzit
Einen guten Leitfaden darüber, wie die Vorratsspeicherung von Daten zwischen Orientierung-änderungen und-Aktivität Erholung finden im android-Richtlinien.
Zusammenfassung:
machen Sie Ihre fragment retainable:
Erstellen Sie ein neues fragment nur, wenn notwendig (oder zumindest Daten)
InformationsquelleAutor der Antwort Sergej Werfel