زهرا زارعی

باقی ماندن تنظیمات

5 ارسال در این موضوع قرار دارد

سلام روز بخیر

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();

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

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


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

خب وقتی از صفحه خارج میشوید متد 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", "");

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


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

برای ارسال نظر یک حساب کاربری ایجاد کنید یا وارد حساب خود شوید

برای اینکه بتوانید نظر ارسال کنید نیاز دارید که کاربر سایت شوید

ایجاد یک حساب کاربری

برای حساب کاربری جدید در انجمن ما ثبت نام کنید. عضویت خیلی ساده است !


ثبت نام یک حساب کاربری جدید

ورود به حساب کاربری

دارای حساب کاربری هستید؟ از اینجا وارد شوید


ورود به حساب کاربری