package com.quickblox.sample.groupchatwebrtc.fragments; import android.os.Bundle; import android.os.Handler; import android.os.Message; import android.support.annotation.Nullable; import android.support.v4.app.Fragment; import android.support.v7.app.ActionBar; import android.support.v7.app.AppCompatActivity; import android.support.v7.widget.Toolbar; import android.util.Log; import android.view.LayoutInflater; import android.view.View; import android.view.ViewGroup; import com.quickblox.sample.groupchatwebrtc.R; import java.lang.ref.WeakReference; public abstract class BaseToolBarFragment extends Fragment { private static final String TAG = BaseToolBarFragment.class.getSimpleName(); protected Handler mainHandler; protected Toolbar toolbar; protected ActionBar actionBar; abstract int getFragmentLayout(); @Override public void onCreate(Bundle savedInstanceState) { setHasOptionsMenu(true); mainHandler = new FragmentLifeCycleHandler(this); super.onCreate(savedInstanceState); } @Nullable @Override public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) { View view = inflater.inflate(getFragmentLayout(), container, false); initActionBar(); return view; } private void initActionBar() { toolbar = (Toolbar) getActivity().findViewById(R.id.toolbar_call); ((AppCompatActivity) getActivity()).setSupportActionBar(toolbar); actionBar = ((AppCompatActivity) getActivity()).getDelegate().getSupportActionBar(); } static class FragmentLifeCycleHandler extends Handler { private WeakReference<Fragment> fragmentRef; FragmentLifeCycleHandler(Fragment fragment){ this.fragmentRef = new WeakReference<>(fragment); } @Override public void dispatchMessage(Message msg) { Fragment fragment = fragmentRef.get(); if (fragment == null){ return; } if (fragment.isAdded() && (fragment.getActivity() != null)) { super.dispatchMessage(msg); } else { Log.d(TAG, "Fragment under destroying"); } } } }