2017-03-18 7 views
1

Dies ist mein erstes Mal für mobile Programmierung. Meine App stürzte ab, als ich von einem Fragment zum anderen wechselte. In Logcat nach einem Absturz zeigte es mir "java.lang.OutOfMemoryError" unter einer Litanei anderer Dinge. Ich denke es liegt daran, dass mein erstes Fragment ein Foto hat und das zweite auch. Gibt es eine einfache Möglichkeit, um sicherzustellen, dass ein Fragment nicht mehr über genügend Arbeitsspeicher verfügt, wenn ein anderes geladen wird? Ich habe mich schon ein wenig umgeschaut, aber keine einfachen Antworten gefunden.So lösen Sie java.lang.OutOfMemoryError in Android Studio mithilfe von Fragmenten

Hier ist der Code für Fragmente wie ...

public boolean onNavigationItemSelected(MenuItem item) { 
    // Handle navigation view item clicks here. 
    int id = item.getItemId(); 
    Fragment fragment; 

    if (id == R.id.nav_home) { 
     fragment = new LandingPageFragment(); 
    } else if (id == R.id.nav_documents) { 
     fragment = new DocumentsPageFragment(); 
    } 
    else if (id == R.id.nav_messages) { 
     fragment = new MessagesFragment(); 
    } 
    else if (id == R.id.nav_admin) { 
     fragment = new AdministrationFragment(); 
    } 
    else{ 
     fragment = new LandingPageFragment(); 
    } 


    FragmentManager fragmentManager = getSupportFragmentManager(); 
    fragmentManager.beginTransaction().replace(R.id.flContent,fragment).commit(); 
    this.prevFragment = fragment; 

    DrawerLayout drawer = (DrawerLayout) findViewById(R.id.drawer_layout_new); 
    drawer.closeDrawer(GravityCompat.START); 
    return true; 
} 
+0

Die Buchung des Stacktrace wird helfen –

Antwort

1

Ich glaube nicht, dass es einen Weg gibt, zu wissen, wenn OutOfMemoryError gets geworfen, aber das Wichtigste, was Sie tun müssen, ist dafür, dass Sie Schalt Lade nicht sehr große Bilder zu deinem ImageViews. Das Beste, was Sie tun können, ist, die Bilder zu skalieren, bevor Sie sie in Ihre ImageView s laden. Dies behebt das OOM-Problem. Sie können den Code in diesem Handbuch verwenden, um die Bilder zu verkleinern: Android developers

+0

Danke, stellt sich heraus, dass das Problem war. Ich habe nicht daran gedacht, weil ich nur ein anderes Bild auf einer Landingpage hatte, aber es war sehr hochauflösend, also nahm es eine unverhältnismäßig große Menge an Speicher auf. –

+0

Ich bin froh, dass ich dir geholfen habe. Kannst du bitte meine Antwort akzeptieren? –

Verwandte Themen