در اندروید برای پلی کردن مدیا از کلاس MediaPlayer استفاده میشه. بدین صورت:
mediaPlayer = new MediaPlayer();
try {
mediaPlayer.setDataSource(fileToPlay.getAbsolutePath());
mediaPlayer.prepare();
mediaPlayer.start();
} catch (IOException e) {
e.printStackTrace();
}
ممکنه بخواهیم آیتم های ریسایکلر ویو رو مرتب سازی کنیم. (مثلا توی اپ Voice Recorder فایل های ضبط شده برحسب تاریخ مرتب سازی شدن). برای این کار باید لیستی که به ریسایکلر ویو میدیم رو برحسب ویژگی مد نظرمون sort کنیم.
برای این کار کلاس model باید اینترفیس comparable یا comparator رو پیاده سازی کنه. این دو تا مثل هم هستن ولی تفاوت هایی دارن که در جدول زیر اومده:
قبلا برای مدیریت onBackPressed در فرگمنت از روش سنتی استفاده میکردیم! بدین صورت که در اکتیویتی اصلی که host فرگمنت هست، فرگمنت فعلی رو میگرفتیم و بررسی میکردیم کدوم فرگمنت هست و با توجه به آن، دکمه بک مدیریت میشد.
نویگیشن کامپوننت که یکی از زیر مجموعه های لایبرری Jetpack به شمار میره، برای این به وجود اومده که کار با فرگمنت ها رو ساده کنه. عمدتا از نویگیشن کامپوننت در اپ های single activity استفاده میشه.
توی کدوم یک از این متدها باید لاجیک کد (یعنی initialize و بقیه موارد) رو انجام داد؟
اینجا میگه توی onCreateView فقط ویو inflate شود و در onViewCreated لاجیک کد رو بنویسیم. دلیلشم اینه که میگه ممکنه توی متد onCreateView هنوز ویو آماده نشده باشه و ممکنه اپ کرش کنه.
ولی توی متد onViewCreated که بلافاصله بعد onCreateView اجرا میشه، مطمئنیم که ویو آماده هست. بنظر من منطقیه. مضاف بر اینکه خود سایت وزین اندروید هم این نظر رو دارن که اینجا نوشته.
این کرنومتر یه مقدار عجیبه! این ویو اکستند شده از تکست ویو بوده و یک تایمر ساده رو پیاده سازی میکنه.
علاوه بر این، دیتای خاصی توی خودش نگه نمیداره.
این کرنومتر دارای متدهای start و stop هست و pause نداره. ولی میشه خودمون pause رو پیاده سازی کنیم.
اگر یک نویگیشن به این صورت داشته باشیم:
A > B > C > A
برای پیاده سازی این بهتره به addToBackstack یک استرینگ به عنوان اسم بدهیم و پس از فرگمنت C توسط popBackStack فرگمنت A را پاپ کنیم.
مشکلی که توی اپ بلاگ داشتم این بود که اگر کاربر بیشتر از یک بار روی فرگمنت میزد، همه دفعات در استک ثبت میشد و اگر بک رو میزدیم به همون تعداد پاپ میشد که خب زیاد جالب نیست!
متد popBackStack اوور لودهای زیر را دارد:
popBackStack(int, int)
popBackStack(String, int)