این لینک استک اور فلو خیلی خوبه برای توضیح فایلهایی که توی پکیج هر برنامه ایجاد میشن و همچنین تفاوت حافظه های داخلی و SD کارت و روت و اینا
این لینک استک اور فلو خیلی خوبه برای توضیح فایلهایی که توی پکیج هر برنامه ایجاد میشن و همچنین تفاوت حافظه های داخلی و SD کارت و روت و اینا
نوشتن Listener برای Preference
نکته اول: اگر بخواهیم با کلیک روی preference و تغییر مقدار آن یه اتفاقی بیفته از این روش استفاده میکنیم. برای این کار از متد
setOnPreferenceChangeListener
استفاده میکنیم. در واقع این متد اینترفیس Preference.OnPreferenceChangeListener رو فراخونی میکنه که داخل این اینترفیس متد onPreferenceChange هست. این متد پس از تغییر مقدار Preference مورد نظر فراخونی میشه.
MultiSelectListPreference:
- مثل قبلی، با این تفاوت که میشه چند تا گزینه رو انتخاب کرد. نتیجه رو توی فایل XML به صورت یک Set ذخیره میکنه.
- title، key و اینا داره.
ListPreference:
- یک لیستی رو نشون میده و کاربر میتونه یک گزینه از این لیست رو انتخاب کنه.
- برای این لیست باید entries و entryValues تعیین کنیم.
- entries: مقادیری که توی لیست نشون داده میشه.
برای داشتن صفحه تنظیمات نیز از Preference استفاده میشه.
برای ساخت صفحه تنظیمات روی res کلیک راست کرده و new android resource file رو میزنیم. ریسورس تایپ رو XML میذاریم و به طور پیش فرض روت المنت PreferenceScreen میشه. بنابراین یک فولدر XML در res ساخته میشه که شامل فایل تنظیمات ما هست.
برای استفاده از Preferenceها توی اندروید، اول باید دیتاتایپ اونو معرفی کنیم. به این صورت:
SharedPreferences prefs;
من اینو توی قسمت فیلدهای کلاس نوشتم.
و ساخت شی توی onCreate:
prefs = getSharedPreferences("MyPrefs",MODE_PRIVATE);
یکی دیگه از روش های ذخیره سازی اطلاعات در اندروید استفاده از Preference ها هست. توی این روش اطلاعات در یک فایل XML ذخیره میشه. معمولا اطلاعاتی مثل تنظیمات برنامه (اسم کاربر، اندازه فونت، رنگ بک گراند و ...) رو توی Preferenceها ذخیره میکنن.
اگر گوشی روت شده باشه (دسترسی به روت داشته باشه) میشه فایل این XML رو دید. (توی امولیتور از طریق مسیر
اسم پکیج برنامه < data > data قابل نمایشه)
1. حتما از کلاس Labels استفاده بشه (برای اسامی دیتابیس، جدول و ستون ها و ...)
2. اگر بخواهیم سرچ کنیم مثلا کدوم کاربر اسم یا فامیلیش یه چیز خاصی هست میشه از Where توی دستور query استفاده کرد. (برای اطلاعات بیشتر به سایت اندروید مراجعه شود)
3. حتما حتما حتما برای دسترسی به دیتابیس توی هر اکتیویتی دیتابیس باید باز بشه. (چند ساعت سر همین رفتم سر کار!)
4. هر جا کارمون با Cursor تموم شد باید اونو close کنیم.
5. استفاده از سینگل تون هم روش خوبیه برای اینکه توی هر اکتیویتی از دیتابیس شی نسازیم. (اینو تست نکردم هنوز)
6. لینک های مفید دیتابیس:
لینک 3 (استفاده از شی سینگل تون)
متد delete
این متد مثل متد آپدیت هست ولی contentValues نداره. خروجی int هم داره. این int شماره اون سطری که تحت تاثیر قرار گرفته (یعنی حذف شده) رو نشون میده در غیر این صورت "صفر" برمیگردونه.
برای اینکه کل سطرها حذف شه باید بجای whereClause "یک" بذاریم. (اینو تست نکردم توی سایت اندروید نوشته)