Bir değişkenin durumunu bir parçanın onSaveInstanceState() ile kaydetmeye çalışıyorum. kaydetmeye çalıştığım değişken, programımdaki başka bir sınıfta oluşturulur, ancak her zaman 0 (başlangıç değeri) olarak okunur. Değişken değerini arttırdığım gerçeğini biliyorum. Değişkenin gerçek değerini nasıl alabilirim? Bu benim kodudur:Başka bir Sınıftan değişken değer elde etme parçası
public class ObjectivesActivity extends Fragment {
//Variables
ObjectivesLogic objectivesLogic = new ObjectivesLogic();
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
// retain this fragment
System.out.println("savedInstanceState: " + savedInstanceState);
if (savedInstanceState != null) {
// Restore last state for checked position.
}
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
return inflater.inflate(R.layout.activity_objectives, container, false);
}
@Override
public void onStart() {
super.onStart();
if (objectivesLogic.getCount()>0){
objectivesLogic.restoreFragment();
}
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
int save = objectivesLogic.getCount();
System.out.println("save: "+save);
outState.putInt("Count",save);
}
}
ve bu değişken yaratıyorum nerede:
public class ObjectivesLogic extends AppCompatActivity {
//Variables
int count = 0;
View savedLinearLayoutView = null;
Context savedContext = null;
public void addObjective(Context context, View linearLayoutView) {
savedContext = context;
savedLinearLayoutView = linearLayoutView;
if (count < 8) {
EditText editText = new EditText(context);
LinearLayout linearLayoutObjectives = (LinearLayout) linearLayoutView;
editText.setId(R.id.edit_text_);
linearLayoutObjectives.addView(editText);
count++;
}
}
public void restoreFragment(){
for(int i=0; i<count;i++){
EditText editText = new EditText(savedContext);
LinearLayout linearLayoutObjectives = (LinearLayout) savedLinearLayoutView;
editText.setId(R.id.edit_text_);
linearLayoutObjectives.addView(editText);
count++;
}
}
public int getCount() {
return count;
}
}
GetCount() her zaman 0. Yardımlarınız :)
"Mantık" nesnesinin Parcelable sürümünü oluşturmanızı ve böylece kaydetmenizi ve durum paketine geri yüklemenizi öneririm. "Mantıksal" nesneniz, gerçekten bir etkinlik değilse, herhangi bir etkinlik sınıfından miras almalıdır. ID'leri programlı olarak oluşturulmuş görünümler için ayarlama, kimliklerin yalnızca XML Kodu boşluğunu kapatmak için kullanıldığından, mantıklı değildir. Çok ciddi bir bellek sızıntısına yol açabileceğinden, bir Bağlam örneğini tutmaya çalışmayın. – Machinarius
Teşekkür ederiz Machinarius! –
Her zaman yardımcı olmaktan mutluluk duyarız – Machinarius