package com.yuantiku.yyl.pages; import android.os.Bundle; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.yuantiku.yyl.helper.L; import com.yuantiku.yyl.observe.MyObservable; import com.yuantiku.yyl.observe.MyObserver; import com.yuantiku.yyl.pages.interfaces.Page; import com.yuantiku.yyl.pages.interfaces.PageManager; import butterknife.ButterKnife; /** * @author wanghb * @date 15/4/25. */ public abstract class FragmentPage extends Fragment implements MyObserver, Page { protected MyObservable myObservable = new MyObservable(); public void addObserver(MyObserver myObserver) { myObservable.addObserver(myObserver); } protected PageManager pageManager; @Override public void setPageManager(PageManager pageManager) { this.pageManager = pageManager; } @Override public void onDestroy() { myObservable.deleteObservers(); super.onDestroy(); } @Override public final View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { if (getLayoutId() == 0) { return super.onCreateView(inflater, container, savedInstanceState); } else { View view = inflater.inflate(getLayoutId(), container, false); ButterKnife.inject(this, view); view.setClickable(true); setupView(view); return view; } } protected abstract int getLayoutId(); protected View setupView(View view) { return view; } public boolean interceptBackPressed() { pageManager.pop(this); return true; } @Override public void update(MyObservable myObservable, Object data) { } @Deprecated @Override public final void update(java.util.Observable observable, Object data) { update((MyObservable) observable, data); } @Override public void prePush() { L.i("prePush"); } @Override public void postPush() { L.i("postPush"); } @Override public void prePop() { L.i("prePop"); } @Override public void postPop() { L.i("postPop"); } }