2016-06-01 7 views
0

Das ist meine onCreate Methode in einer Klasse ist, die Unterklasse von Fragmente istsavedInstanceState ist immer null-Wert in onCreate

static int counter = 0; 
@Override 
public void onCreate(Bundle savedInstanceState){ 
    super.onCreate(savedInstanceState); 
    if(savedInstanceState == null) { //made for first time 
     Log.d("came in", "Came in"); 
     counter = 0; 
    } else { 
     counter = savedInstanceState.getInt("counter", 0); 
    } 
} 

das ist meine savedInstanceState Methode

@Override 
public void onSaveInstanceState(Bundle outState){ 
    super.onSaveInstanceState(outState); 
    Log.d("hi there", ""+counter); // this is printing hi there 3 
    outState.putInt("counter", counter);//key value pair 
} 

aber in onCreate Methode savedInstanceState ist immer null und Drucken kam herein.

+0

Der gespeicherte Zustand wiederhergestellt wird, wenn sich der Aktivitätszustand, das heißt vor allem auf Konfigurationsänderungen (Rotation und dergleichen) eingefroren. Es gibt keinen gespeicherten Zustand, wenn Sie z.B. Erstellen Sie die Aktivität von Grund auf neu. Haben Sie erwartet, dass der gespeicherte Zustand beharrlicher ist als er? – dhke

+0

Ich möchte Zählervariable erhalten, wenn ich den Bildschirm rotiere. –

Antwort

1

Override protected void onRestoreInstanceState(Bundle savedInstanceState) und sehen, ob Sie Ihre Werte dort bekommen können.

+0

onRestoreInstanceState-Methode ist nicht in der Super-Klasse. Ich erweitere die Fragmentklasse. –

+0

holen Sie es von der übergeordneten Aktivität oRestoreInstanceState() und übergeben Sie es über eine Methode an das sichtbare Fragment. –

0

Versuchen Sie, Ihren Wert in Ihrer Fragmenthostaktivität zu speichern (Aktivität, in der Ihr Fragment definiert ist). Aus der Hostaktivität müssen Sie diesen Wert extrahieren und in Ihrer Fragmentunterklasse darauf zugreifen.

0

versuchen Sie Methode onSaveInstanceState ändern: nur

@Override 
public void onSaveInstanceState(Bundle outState){  
    Log.d("hi there", ""+counter); // this is printing hi there 3 
    outState.putInt("counter", counter);//key value pair 
    super.onSaveInstanceState(outState); // call super after put int 
} 
Verwandte Themen