2017-06-15 4 views
0

Ich mache eine Android-App für eine Schule.Die Aktivität wiederverwenden, ohne sie neu zu erstellen

1. Aktivität ist von Student die einen ViewPager enthalten besteht aus 3 Fragmenten. Diese Aktivität ist teuer zu laden, da sie 3 Fragmente enthält.

erstes Fragment enthält ein Listview of Games

zweites Fragment enthält ein Listview von Cartoons

3.es Fragment enthält ein Listview von Test (Listview enthält nur Titel von Test).

Jetzt in -Test Fragment onClick auf dem Test (angezeigt in Listenansicht) eine neue ShowTest Aktivität ist offen, welche den kompletten Test angezeigt.

Alles gut funktioniert.

, dass der Code in TestFragment ist ShowTest Aktivität Ich bin (nur Finish

test.setOnItemClickListener(new AdapterView.OnItemClickListener() { 
     @Override 
     public void onItemClick(AdapterView<?> adapterView, View view, int i, long l) { 
      Intent it = new Intent(getActivity(), ShowTest.class); 
      startActivity(it); 
     } 
    }); 

Und in ShowTest Aktivität lostelefonieren);

public void onBackPressed() { 
    this.finish(); 
} 

Aber in ShowTest wenn onBackpressed() Schüler genannt wird Aktivität neu erstellt (Alles, was in Fragmente neu laden). Ich möchte nicht, dass diese Aktivität zum zweiten Mal erstellt wird. Wie es teuer ist, zu laden.

Diese beiden Verbindungen hat mir nicht geholfen

Open Info Activity without closing Main Activity

Android - Relaunching an activity without having to re-create it

Ihre Hilfe geschätzt wird.

Danke (Edited)

+0

hängt davon ab, wie Sie Ihre Aktivität starten und wo der relevante Teil des Codes ist. Zum Beispiel, wenn Sie die Aktivität beenden und die nächste und von dieser zurück zur ersten gehen, dann ist es neu erstellt. Wenn Sie nicht fertig sind, bleibt die Aktivität normalerweise im Hintergrund. Dann ist es wichtig, wo der ganze Code ist .... wenn Sie zum Beispiel alles in onResume() initialisieren, dann wird alles wieder gemacht.Sie müssen unbedingt Activities Lifecycle lesen: https: //developer.android.com/guide/components/activities/activity-lifecycle.html – Opiatefuchs

+1

Es gibt keine Möglichkeit, dies sicherzustellen. Wenn Android Speicherprobleme erkennt, werden Aktivitäten, die nicht im Vordergrund sind, geschlossen und bei Bedarf später erneut erstellt. Es gibt keine Möglichkeit, dieses Verhalten zu überschreiben (in der Tat ist die einzige Möglichkeit, es für Testzwecke immer einzuschalten). –

+0

Geben Sie den Code ein, mit dem Sie ShowTestActivity, Ihre onBackPressed() - Methode und jeden anderen relevanten Code starten. –

Antwort

0

Sorry, mein Fehler

In Android Manifest

<activity 
    android:name="plan9.naseemdev.muhammadtaimoor.naseem.Student" 
    android:configChanges="orientation|screenSize" 
    android:noHistory="true" /> 

Aufgrund ' android: Nohistory = "true"' Studenten Aktivität wurde jedes Mal neu zu erstellen. Nach dem Entfernen dieser Zeile funktioniert es für mich.

0

Sie könnten finish() beim Start anderer Aktivität anrufen. Rufen Sie das nicht an und starten Sie die Aktivität ohne finish().

+0

Nein. Ich rufe 'finish()' nicht beim Start der Aktivität an. Immer noch neugierig, warum das passiert – Taimoor

-2

Teilen Sie Ihren Code, damit ich weiter helfen kann. Überprüfen Sie auch, ob Sie den Pager-Adapter richtig initialisiert haben.

Verwandte Themen