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 muss zwei Listenansichten nebeneinander anzeigen, das Menü links und den Inhalt rechts. Standardmäßig ist das erste Menü ausgewählt und sein Inhalt wird auf der rechten Seite angezeigt. Das Fragment, das den Inhalt anzeigt, 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 );
}
}
Die onActivityCreated und onCreateView werden aufgerufen zweimal. Es gibt viele Beispiele, die Fragmente verwenden. Da ich Anfänger in diesem Thema bin, kann ich das Beispiel nicht mit meinem Problem in Verbindung bringen. Ich brauche einen narrensicheren Weg, um mit Orientierungsänderungen umzugehen. Ich habe NICHT deklariert android:configChanges
in der Manifestdatei. Ich brauche die Aktivität zerstören und neu erstellen, damit ich im Querformat ein anderes Layout verwenden kann.
Normalerweise werden Orientierungsänderungen von Fragmenten erledigt, ohne dass Sie etwas tun müssen. Was ist also das Problem, das Sie haben, wenn Sie die Ausrichtung ändern?
– Alexander Kulachtin
9. November 12 um 10:11 Uhr
Alex Ich brauche das Fragment der Klasse DetailPart1, um das Layout mit listView im Hochformat und das Layout mit Grid View im Querformat anzuzeigen. Dazu muss ich das Fragment jedes Mal neu erstellen, aber ich möchte nicht die gleichen Datensätze erneut laden, also i Speichern Sie sie unter onSaveInstanceState. Aber der obige Code erstellt DetailPart1 zweimal neu, ich muss den fehlenden Code kennen, der es wie gewünscht funktionieren lässt
– Benutzer1811741
9. November 12 um 18:49 Uhr
mögliches Duplikat des Lebenszyklus von Android-Fragmenten über Ausrichtungsänderungen
– NaXa
18. Dezember 14 um 14:24 Uhr