Dhruv Gairola'nın yanıtladığı gibi, Bundle SavedInstanceState'i kullanarak uygulamanın durumunu kaydedebilirsiniz. Benim gibi yeni öğrencilerin kolayca anlayabileceği çok basit bir örnek vermeye çalışıyorum.
Diyelim ki, bir TextView ve bir Button içeren basit bir parçanız var. Düğmeye her tıkladığınızda metin değişir. Şimdi, cihazınızın / emülatörünüzün yönünü değiştirin ve verileri kaybettiğinizi (aldığınız tıkladıktan sonra değiştirilen veriler anlamına gelir) ve parçanın ilk kez tekrar başladığını fark edin. Bundle SavedInstanceState kullanarak bundan kurtulabiliriz. Parçanın yaşam döngüsüne bir göz atarsanız. Fragment Lifecylce , fragman yok edilmek üzereyken "onSaveInstanceState" yönteminin çağrıldığını göreceksiniz.
Yani, durumu kaydedebiliriz, değiştirilen metin değeri şu şekilde bu pakete
int counter = 0;
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("value",counter);
}
Yönlendirmeyi yaptıktan sonra "onCreate" yöntemi çağrılacak değil mi? yani bunu yapabiliriz
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null){
//it is the first time the fragment is being called
counter = 0;
}else{
//not the first time so we will check SavedInstanceState bundle
counter = savedInstanceState.getInt("value",0); //here zero is the default value
}
}
Şimdi, oryantasyondan sonra değerinizi kaybetmeyeceksiniz. Değiştirilen değer her zaman görüntülenecektir.