Ich bin neu im Programmieren, ich habe eine Naviagation Schublade mit Fragmenten. Wenn ich mein Gerät rotiere, startet es "die App neu" oder ruft das Home-Fragment auf. Ich bin mir nicht sicher, wie ich das beheben könnte, da es mit super.onCreate (savedInstance) verwandt ist, aber nicht gefunden hat, wie es implementiert wird. Ich versuchte auch mit der onConfigurationChanged Methode auf meinem Manifest ohne Glück. Ich habe Code aus verschiedenen Tutorials kopiert, um meine App so arbeiten zu lassen, dass ich nicht sicher bin, ob der Code im Posting der sein sollte, den ich posten sollte. Vielen Dank.Orientierung startet meine App neu
public class MainActivity extends FragmentActivity {
private DrawerLayout mDrawerLayout;
ImageView home;
Fragment fragment = null;
TextView appname;
ExpandableListView expListView;
HashMap<String, List<String>> listDataChild;
ExpandableListAdapter listAdapter;
List<String> listDataHeader;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
String fontPath = "neue.ttf";
setContentView(R.layout.activity_main);
home = (ImageView)findViewById(R.id.home);
home.setOnClickListener(homeOnclickListener);
appname = (TextView)findViewById(R.id.appname);
Typeface tf = Typeface.createFromAsset(this.getAssets(), fontPath);
appname.setTypeface(tf);
setUpDrawer();
}
private void setUpDrawer() {
mDrawerLayout = (DrawerLayout) findViewById(R.id.drawer_layout);
mDrawerLayout.setScrimColor(getResources().getColor(android.R.color.transparent));
mDrawerLayout.setDrawerListener(mDrawerListener);
expListView = (ExpandableListView) findViewById(R.id.lvExp);
prepareListData();
listAdapter = new ExpandableListAdapter(this, listDataHeader, listDataChild);
expListView.setAdapter(listAdapter);
fragment = new Home();
getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).commit();
mDrawerLayout.closeDrawer(expListView);
expListView.setOnChildClickListener(new ExpandableListView.OnChildClickListener() {
@Override
public boolean onChildClick(ExpandableListView parent, View v, int groupPosition, int childPosition, long id) {
switch (groupPosition) {
case 0:
switch (childPosition) {
case 0:
fragment = new 1();
break;
case 1:
fragment = new 2();
break;
case 2:
fragment = new 3();
break;
...
}
break;
case 1:
switch (childPosition) {
case 0:
fragment = new 4();
break;
...
default:
break;
}
break;
...
}
getSupportFragmentManager().beginTransaction().replace(R.id.content_frame, fragment).commit();
mDrawerLayout.closeDrawer(expListView);
return false;
}
});
}...
In Ihrem Manifest-Datei Add 'android: configChanges = "Orientierung"' zu Ihrem Aktivitäts-Tag. Dies verhindert, dass die Aktivität bei einer Orientierungsänderung zerstört und neu erstellt wird. Erweitern Sie AppCompatActivity mit Ihrer Aktivität auch aus der Support-Bibliothek. Dies ist ein besserer Ansatz für die Abwärtskompatibilität und stellt sicher, dass das configeChanges-Tag funktioniert. – chRyNaN
Danke, ich versuche es, aber es hat nicht funktioniert –
Als Shadab Ansari die Antwort, die Antwort mir helfen viel, aber ich musste über andere Probleme gehen, endlich fand ich eine Lösung für das Rotationsproblem auf eine andere Weise, die meine App nicht abgestürzt ist, wenn Sie wollen sehen, dass es hier ist http://stackoverflow.com/questions/36900671/app-crashen-after-irotate-device-and-click-the-menu/36901929#36901929 –