ورود

View Full Version : محل ذخیره تنظیمات کاربری



NIMA_1981
یک شنبه 02 تیر 1392, 13:22 عصر
سلام دسوتان
من در برنامه که ساختم یک صفحه تنظیمات دارم حالا یک سری اطلاعات توسط کاربر وارد میشه و هر بار که کاربر وارد برنامه میشه باید از این تنظیمات استفاده کنه من باید این اطلاعات را کجا ذخیره کنم که از بین نره و بتونم به راحتی فراخوانی کنم با تشکر

hamid_hr
یک شنبه 02 تیر 1392, 14:23 عصر
ميتوني تو فايل ذخيره كني يا ديتابيس

rubiks.kde
یک شنبه 02 تیر 1392, 14:26 عصر
دوست عزیز شما باید مبحث preferences رو بخوبی بررسی کنید .این مبحث تمام نیاز های شما رو برطرف میکنه.

توی یه مورد خیلی ساده (استفاده از این کلاس)

ذخیره کردن :

SharedPreferences settings = getSharedPreferences("UserInfo", 0);
SharedPreferences.Editor editor = settings.edit();
editor.putString("Username",txtUname.getText().toString());
editor.putString("Password",txtPWD.getText().toString());
editor.commit();

استفاده از ذخیره ها :

SharedPreferences settings = getSharedPreferences("UserInfo", 0);
txtUname.setText(settings.getString("Username", "").toString());
txtPWD.setText(settings.getString("Password", "").toString());

NIMA_1981
یک شنبه 02 تیر 1392, 17:50 عصر
اطلاعات در مورد preferences زا باید از کجا بخونم و کاربرد اصلیش برای چیه

rubiks.kde
یک شنبه 02 تیر 1392, 22:47 عصر
اطلاعات در مورد preferences زا باید از کجا بخونم و کاربرد اصلیش برای چیه

کاربرد اصلیش مربوط میشه به تنظیمات و ... که کاربر ذخیره میکنه و میخواد توی جاهای مختلف استفاده کنه.یا مثلا برنامه ایی دارید که میخواهید تنظیماتی رو در اختیار کاربر بزارید تا با اون تنظیمات برنامه رو کنترل کنه و خودتون توی جاهای مختلف برنامه ازش استفاده کنید.

برای شروع هم منابع خیلی زیاده توی اینترنت و خود داکیومنت Android.

NIMA_1981
دوشنبه 03 تیر 1392, 01:32 صبح
فقط یک سوال دیگه بعد ار نصب برنامه اگه یک بار این تنظیمات به این شکل اضافه بشه بعد از هر بار وارد شدن یا خارج شدن اطلاعات از بین نیمره ؟

Modernidea
دوشنبه 03 تیر 1392, 01:51 صبح
سلام

تا زمانی که برنامه از روی سیستم عامل حذف نشود، و Clear Data انجام نشود، این مقادیر قابل دسترسی خواهد بود و تغییر نمیکند.

موفق باشید.

NIMA_1981
شنبه 08 تیر 1392, 13:21 عصر
دوست عزیز من تا این خط را به برنامه اضافه میکنم موقع اجرا سریع از برنامه خارج میشه و خطا میده

SharedPreferences settings = getSharedPreferences("UserInfo", 0);



نباید permissions خاصی را تعریف کنیم ؟

rubiks.kde
شنبه 08 تیر 1392, 15:13 عصر
دوست عزیز من تا این خط را به برنامه اضافه میکنم موقع اجرا سریع از برنامه خارج میشه و خطا میده

SharedPreferences settings = getSharedPreferences("UserInfo", 0);



نباید permissions خاصی را تعریف کنیم ؟

نه permissions نداره ، مطمئنی خطا از این خطه ؟
چون هیچ مشکلی نداره.

public class Calc extends Activity {
public static final String PREFS_NAME = "MyPrefsFile";

@Override
protected void onCreate(Bundle state){
super.onCreate(state);
. . .

// Restore preferences
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
boolean silent = settings.getBoolean("silentMode", false);
setSilent(silent);
}

@Override
protected void onStop(){
super.onStop();

// We need an Editor object to make preference changes.
// All objects are from android.context.Context
SharedPreferences settings = getSharedPreferences(PREFS_NAME, 0);
SharedPreferences.Editor editor = settings.edit();
editor.putBoolean("silentMode", mSilentMode);

// Commit the edits!
editor.commit();
}
}

NIMA_1981
شنبه 08 تیر 1392, 15:28 عصر
بله تا این خط را اضافه میکنم به محضی که وارد برنامه میشه خطا میده و خارج میشه

NIMA_1981
شنبه 08 تیر 1392, 15:55 عصر
من وقتی این خط را در onCreate قرار میدم دیگه خطا نمیده

SharedPreferences settings = getSharedPreferences("UserInfo", 0);

حالا مشکل اینجاست

userprice=Double.parseDouble(settings.getString("userprice", "").toString());


به حدسی هم خودم میزنم اینکه برای بار اول که این متغییر ها وجود نداره اگه فراخوانی ممکنه این خطا برای این باشه

rubiks.kde
شنبه 08 تیر 1392, 17:56 عصر
من وقتی این خط را در onCreate قرار میدم دیگه خطا نمیده

SharedPreferences settings = getSharedPreferences("UserInfo", 0);

حالا مشکل اینجاست

userprice=Double.parseDouble(settings.getString("userprice", "").toString());


به حدسی هم خودم میزنم اینکه برای بار اول که این متغییر ها وجود نداره اگه فراخوانی ممکنه این خطا برای این باشه

مگه قبلا کجا مس نوشتید؟

بله برای بار اول خالی برمیگرده دقت کنید که تابع settings.getString("u serprice", "") دوتا آرگومان داره که دومی مقدار پیش فرض است که اگه نبود این مقدار برگرده.
همچنین این تابع خروجی رو برای شما به صورت سترینگ برمیگردونه و لازم نیست دوباره به استرینگ تبدیل کنید.