رفتن به مطلب
انجمن اندروید ایران | آموزش برنامه نویسی اندروید و موبایل
  • android.png.1fab383bc8500cd93127cebc65b1dcab.png

پست های پیشنهاد شده

سلام روز بخیر

1 سوال دارم لطف کنید هر چه زودتر بهم جواب بدین

من تو یه صفحه تنظیمات تغییر میدم مثلا تیک 1  checkboxرو میزنم و مقدار 1 تکست رو تغییر میدم و مقدار تکست رو توی دیتابیس ذخیره میکنم ولی وقتی به یه صفحه دیگه میرم و دوباره به اون صفحه برمیگردم اون تنظیمات از بین رفته باید چکار کنم که حتی بعد از بسته شدن برنامه و باز شدن دوباره تنظیمات هنوز باشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر

خب وقتی از صفحه خارج میشوید متد onDestory اجرا میشود و وقتی دوباره برمیگردیم به متد OnCreate وارد میشویم پس کلیه اطلاعات دوباره ساخته میشود.

راه حل: خب تو اندروید دو تابع به نام های OnSaveState و onRestoreState وجود دارند برای اینکه حالت صفحه را ذخیره و دوباره بازیابی کنند.

به نمونه مثال زیر توجه کنید :

ذخیره اطلاعات :

@Overridepublic void onSaveInstanceState(Bundle savedInstanceState) {  super.onSaveInstanceState(savedInstanceState);  // Save UI state changes to the savedInstanceState.  // This bundle will be passed to onCreate if the process is  // killed and restarted.  savedInstanceState.putBoolean("MyBoolean", true);  savedInstanceState.putDouble("myDouble", 1.9);  savedInstanceState.putInt("MyInt", 1);  savedInstanceState.putString("MyString", "Welcome back to Android"); }

بازیابی اطلاعات :

@Overridepublic void onRestoreInstanceState(Bundle savedInstanceState) {  super.onRestoreInstanceState(savedInstanceState);  // Restore UI state from the savedInstanceState.  // This bundle has also been passed to onCreate.  boolean myBoolean = savedInstanceState.getBoolean("MyBoolean");  double myDouble = savedInstanceState.getDouble("myDouble");  int myInt = savedInstanceState.getInt("MyInt");  String myString = savedInstanceState.getString("MyString");}
لینک ارسال
به اشتراک گذاری در سایت های دیگر

در تکمیل پاسخ مدیر انجمن باید عرض کنم برای ذخیره تنظیمات و بازیابی اونها میتونید از SharedPreferences که تنظیمات رو در یک فایل XMl  ذخیره میکنه استفاده کنید و هر موقع و هر کجا که دوست داشتید قابل بازیابی هست

روش استفاده :

تابع ذخیره اطلاعات :

private void savePrefs(String key, String value) {		 SharedPreferences sp = this.getSharedPreferences("ChargeSetting", MODE_PRIVATE);		 SharedPreferences.Editor edit =  sp.edit();		edit.putString(key, value);		edit.commit();	}

برای بازیابی اطلاعات از این تابع :

   private void loadPrefs() {	final  SharedPreferences sp = this.getSharedPreferences("ChargeSetting", MODE_PRIVATE);	  	       // SharedPreferences sp = PreferenceManager.getDefaultSharedPreferences(this);	  	        	  	        String low = sp.getString("low_set", "");	  	      String highe = sp.getString("highe_set", "");	  	      	          txt_low.setText(low);	          txt_highe.setText(highe);	  	    }

هر کجا خواستید اطلاعات  ذخیره بشه  اینطوری از تابع Save  استفاده میکنید :

savePrefs("low_set", txt_low.getText().toString());					savePrefs("highe_set", txt_highe.getText().toString());

هر کجا خواستید اطلاعات رو لو کنید به این صورت :

	    loadPrefs();

امیدوارم این مطلب مفید واقع شده باشه

لینک ارسال
به اشتراک گذاری در سایت های دیگر
  • 3 هفته بعد...

خب وقتی از صفحه خارج میشوید متد onDestory اجرا میشود و وقتی دوباره برمیگردیم به متد OnCreate وارد میشویم پس کلیه اطلاعات دوباره ساخته میشود.

راه حل: خب تو اندروید دو تابع به نام های OnSaveState و onRestoreState وجود دارند برای اینکه حالت صفحه را ذخیره و دوباره بازیابی کنند.

به نمونه مثال زیر توجه کنید :

ذخیره اطلاعات :

@Overridepublic void onSaveInstanceState(Bundle savedInstanceState) {  super.onSaveInstanceState(savedInstanceState);  // Save UI state changes to the savedInstanceState.  // This bundle will be passed to onCreate if the process is  // killed and restarted.  savedInstanceState.putBoolean("MyBoolean", true);  savedInstanceState.putDouble("myDouble", 1.9);  savedInstanceState.putInt("MyInt", 1);  savedInstanceState.putString("MyString", "Welcome back to Android"); }

بازیابی اطلاعات :

@Overridepublic void onRestoreInstanceState(Bundle savedInstanceState) {  super.onRestoreInstanceState(savedInstanceState);  // Restore UI state from the savedInstanceState.  // This bundle has also been passed to onCreate.  boolean myBoolean = savedInstanceState.getBoolean("MyBoolean");  double myDouble = savedInstanceState.getDouble("myDouble");  int myInt = savedInstanceState.getInt("MyInt");  String myString = savedInstanceState.getString("MyString");}

سلام اقای سرسیفی من که از دوتا تابع هم استفاده می کنم بازم حالت صفحه ذخیره نمیشه.

به نظرتون مشکل از کجاست؟

@Override

public void onSaveInstanceState(Bundle savedInstanceState) {

  super.onSaveInstanceState(savedInstanceState);

 

  if(chkalm1.isChecked()){

      savedInstanceState.putBoolean("ch1",true );}

  else{

      savedInstanceState.putBoolean("ch1",false);

  }

  savedInstanceState.putString("MyString", alarm1.toString());

 

}

@Override

public void onRestoreInstanceState(Bundle savedInstanceState) {

  super.onRestoreInstanceState(savedInstanceState);

  // Restore UI state from the savedInstanceState.

  // This bundle has also been passed to onCreate.

  boolean ch1 = savedInstanceState.getBoolean("ch1");

  if(ch1){

      chkalm1.setChecked(true);}

  else{

      chkalm1.setChecked(false);

  }

  String myString = savedInstanceState.getString("MyString");

  System.out.print(myString);

  alarm1.setText(myString);

}

لینک ارسال
به اشتراک گذاری در سایت های دیگر

اگر اطلاعات را ذخیره نمیکند،بهتره اطلاعات رو در sharedPrefrences ذخیره کنید، سپس پس از خروج از اپلیکیشن اطلاعات پاک شود تا در صورت اجرا شدن دوباره برنامه برنامه به حالت عادی برگردد.چون sharedPrefrences در اندروید بطور عادی اطلاعات را تا زمانی که برنامه نصب شده باشد در خود نگه میدارد.

 SharedPreferences preferences = getSharedPreferences(                                "user", 0);                        SharedPreferences.Editor editor = preferences.edit();                        editor.putString("typedate", typeDate);                        editor.putString("date", _daySelected);                        editor.commit();

سپس برای بازیابی اطلاعات :

	SharedPreferences setting = getSharedPreferences("user", 0);		typedate=setting.getString("typedate", "") ;		dates = setting.getString("date", "");
لینک ارسال
به اشتراک گذاری در سایت های دیگر

به گفتگو بپیوندید

هم اکنون می توانید مطلب خود را ارسال نمایید و بعداً ثبت نام کنید. اگر حساب کاربری دارید، برای ارسال با حساب کاربری خود اکنون وارد شوید .

مهمان
ارسال پاسخ به این موضوع...

×   شما در حال چسباندن محتوایی با قالب بندی هستید.   حذف قالب بندی

  تنها استفاده از 75 اموجی مجاز می باشد.

×   لینک شما به صورت اتوماتیک جای گذاری شد.   نمایش به صورت لینک

×   محتوای قبلی شما بازگردانی شد.   پاک کردن محتوای ویرایشگر

×   شما مستقیما نمی توانید تصویر خود را قرار دهید. یا آن را اینجا بارگذاری کنید یا از یک URL قرار دهید.

×
×
  • اضافه کردن...