View Full Version : از بین رفتن داده ها هنگام عوض کردن اکتیویتی
Sina.iRoid
شنبه 06 دی 1393, 22:12 عصر
سلام
دوستان من به یه مشکلی بر خوردم. اینکه در یه اکتیویتی یه سری مقادیر وارد میشه و بعد با استفاده از اینتنت ها وارد یه اکتیویتیه دیگه میشیم. وقتی هم که دکمه Back و میزنم اون اطلاعات از بین رفته.
راه حل چه!؟
ممنون میشم اگر راهنماییم کنید.
saeed74
یک شنبه 07 دی 1393, 08:01 صبح
شما باید از متد SharedPreferences برای ذخیره اطلاعات استفاده کنید.
البته اول تابع onBackPressed رو باید در اکتیویتی فراخانی کنید سپس اونجا تمام فیلد هایی که میخواین ذخیره بشن رو با اون متد سیو که گفتم (آموزش نوشتنش هست) ذخیره کنید..
بعد وقتی اکتیویتی اجرا میشه یعنی تو onCreate بعد از تعریف همون فیلد ها (مثلا EditText) مقادیری که ذخیره کرده بودید رو لود کنید.
کافیه آموزش یا مثالی در مورد sharedPreferences ها مطالعه کنید
esideli
یک شنبه 07 دی 1393, 08:36 صبح
سلام
شما می تونی از این کد استفاده کنی. این تابع مقادیری رو که توش تعریف می کنی با رفتن به حالت onPause ذخیره می کنه.به این صورت که هر متغیری که می خوای مقدارش از بین نره رو توی این تابع یه اسم براش تعریف می کنی.
فقط چند تا نکته:
1_ اگه تو اکتیویتی که با این متد مقادیر رو ذخیره کردیم دکمه back رو بزنیم اطلاعات از بین میره. یعنی اکتیویتی مون نباید به حالت onDestroy بره.
2_ توی متد onResume باید متغیر هایی رو که ذخیره کرده بودی ازشون استفاده کنی مثلا مقادیرش رو بدی به تکست ویو.
من اینجا یه عدد رو ذخیره کردم و توی onResume دادمش به لیست ویو.
@Override
protected void onSaveInstanceState(Bundle outState) {
// TODO Auto-generated method stub
super.onSaveInstanceState(outState);
outState.putInt("nameDelkhah",nameMoteghayer);
}
@Override
protected void onRestoreInstanceState(Bundle SaveInstanceState) {
// TODO Auto-generated method stub
super.onRestoreInstanceState(SaveInstanceState);
SaveInstanceState.getInt("nameDelkhah");
}
@Override
protected void onResume() {
// TODO Auto-generated method stub
super.onResume();
refresh_listVew();
myListView.setSelection(nameMoteghayer);
}
vBulletin® v4.2.5, Copyright ©2000-1404, Jelsoft Enterprises Ltd.