package io.c0nnector.github.paradise.ui;
import android.os.Bundle;
import android.support.annotation.LayoutRes;
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.f2prateek.dart.Dart;
import butterknife.ButterKnife;
/**
* Base Fragment
*
* Functionality:
* - Inject @extras
*
*/
public abstract class BaseFragment extends Fragment{
/**
* Use it to set your fragment layout id
* @return layout id
*/
@LayoutRes
protected int getLayout(){return 0;}
/**
* Initialized with onViewCreated()
*/
protected void afterViews(){}
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
//inject extras
Dart.inject(this, getArguments());
}
@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
if (getLayout() == 0) return super.onCreateView(inflater,container, savedInstanceState);
//create fragment layout
View view = inflater.inflate(getLayout(), container, false);
//inject butterknife
ButterKnife.bind(this, view);
return view;
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
afterViews();
}
@Override
public void onDestroyView() {
super.onDestroyView();
ButterKnife.unbind(this);
}
public static <F>Fragment create(F fragment){
return null;
}
}