در حالت پیش فرض بک استک فقط برای اکتیویتی وجود داره و فرگمنتها بک استک ندارن. برای استفاده از بک استک فرگمنت باید اون رو توی کد فعال کنیم.
در حالت پیش فرض بک استک فقط برای اکتیویتی وجود داره و فرگمنتها بک استک ندارن. برای استفاده از بک استک فرگمنت باید اون رو توی کد فعال کنیم.
بدین صورت:
Fragment currentFragment = getFragmentManager().findFragmentById(R.id.fragContainer);
if (currentFragment instanceof F1) {
//do your stuff here
}
fragContainer همون لیوتی هست که فرگمنت داخل اون لود میشه.
F1 فرگمنت مورد نظر.
اینو برای مدیریت دکمه بک در پروژه بلاگ کشف کردم! برای اینکه اگر توی فرگمنتای دیگه بود به فرگمنت Home بره و اگر توی فرگمنت Home بود از اپ بره بیرون. این قسمت توی onBackpressed نوشته میشه.
اگر برای تگ include آی دی گذاشتیم، آی دی روت هم "حتما" باید همون باشه. برای findViewById کردن به صورت زیر عمل می کنیم:
<include
android:id="@+id/outer"
layout="@layout/test" />
FrameLayout outer = (FrameLayout)findViewById(R.id.outer);
//در خط بالا به جای فریم لیوت میشد از ویو استفاده کرد
ImageView iv = (ImageView)outer.findViewById(R.id.inner);
if (iv == null) {
Log.e(TAG, "Not found!");
}
اگر تگ include آی دی نداشت، نیازی نیست اول include رو initialize کنیم. به صورت قبل findViewById انجام میشود.
اگر به هر دلیلی عکس توسط گلاید لود نشه، با تعریف placeholder میشه عکس پیش فرض را مشخص کرد. بدین صورت:
Glide.with(fragment)
.load(url)
.placeholder(R.drawable.placeholder)
.into(view);
یا
Glide.with(fragment)
.load(url)
.placeholder(new ColorDrawable(Color.BLACK))
.into(view);
برای ارسال دیتا "از فرگمنت" "به اکتیویتی" دو تا راه وجود داره:
1. راه بد و آسان:
فراخونی اکتیویتی توسط getActivity و صدا کردن ویوی مورد نظر (مثلا تکست ویو) و نوشتن اطلاعات در آن. در این حالت ویو حتما باید پابلیک باشد.
2. راه خوب همراه با کمی چالش:
استفاده از اینترفیس در حالی که اکتیویتی آن را پیاده سازی کرده باشد.
backgroundTint:
یک اتریبیوت باتن هست که رنگ بک گراند رو مشخص میکنه.
توسط shape میشه رنگ و شکل باتن (یا به طور کلی هر ویو) رو تغییر داد. (با ست کردن drawable برای بک گراند)
نکته: backgroundTint به shape اولویت داره. یعنی اگر رنگی در shape مشخص شده باشه و رنگ دیگری در backgroundTint، رنگ نهایی ویو همان رنگ backgroundTint خواهد بود.
واقعا این اندروید استودیو فازش چیه :|
setNavigationItemSelectedListener کار نمیکرد، سرچ کردم راه حل هاش اینا بود:
فایربیس یک سیستم بک اند هست. نحوه ثبت پروژه در سایت فایربیس و اپلیکیشین در ادامه توضیح داده می شود.