اینطوره که موقعی که روی باتن توی فرگمنت کلیک شد فرگمنت ریمو بشه و به اکتیویتی اطلاع داده بشه که این ریمو شده و اکتیویتی بیاد یه عملیاتی انجام بده..
بهترین روش برای پیاده سازی این سناریو چی هستش؟
سلام و احترام
من به ترتیب مراحل رو خدمتتون مینویسم .
قبل هر چیز دانستیم که فرگمنت در اکتیویتی زندگی میکند پس به طور کل وقتی متد onAttach مربوط به چرخه حیات فرگمنت کال شود یعنی فرگمنت به اکتویتی متصل شده است
مرور lifecycle fragment : (البته خلاصه)
@Override
public void onDestroy() {
super.onDestroy();
}
@Override
public void onDetach() {
super.onDetach();
}
@Override
public void onStop() {
super.onStop();
}
@Override
public void onPause() {
super.onPause();
}
چرا اینها رو گفتم به این دلیل که شما بسته به شرایطتتان مثلا اینترفیسی رو در onDetach کال کنید تا اکتیویتیتان را notify کنید
خب حالا میریم سراغ مراحل که ذکر کردم:
۱-ساخت یک اینترفیس به عنوان callbackکه خبر remove شدن فرگمنت رو به اکتیویتی مون اطلاع بدیم بدین صورت:(شما هر طور بخاید میتونید پارامترهای لازم رو بهش بدید)
public interface CallBack<T> {
void onCall(int key, T body);
}
۲- implements کردن اینترفیسی که در فرگمنت ساختیم در اکتیویتی مربوطه:
public class MyActivity extends Activity implements Callback
سپس در onDetach (زمانی که فرگمنت میمیرد) که اول تاپیک مروری کردیم :
@Override
public void onDetach() {
super.onDetach();
if(callback !=null){
callback.call(some key, some T type value);
}
}
پس به طور کل شما میتوانید با اینترفیس به اکتیویتیتان اطلاع دهید چه زمانی Fragment مربوطه remove شده و با توجه به این اطلاع اقدام مد نظرتون رو انجام بدید