package com.markzhai.lyrichere.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 butterknife.ButterKnife;
import icepick.Icepick;
/**
* Base Fragment with dependency injection.
* <p/>
* Created by zyf on 2015/9/12.
*/
public class BaseFragment extends Fragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Icepick.restoreInstanceState(this, savedInstanceState);
}
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
Icepick.saveInstanceState(this, outState);
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
int layoutRes = getLayoutRes();
if (layoutRes == 0) {
throw new IllegalArgumentException(
"getLayoutRes() returned 0, which is not allowed. "
+ "If you don't want to use getLayoutRes() but implement your own view for this "
+ "fragment manually, then you have to override onCreateView();");
} else {
return inflater.inflate(layoutRes, container, false);
}
}
@Override
public void onViewCreated(View view, @Nullable Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
ButterKnife.bind(this, view);
}
@Override
public void onDestroy() {
super.onDestroy();
ButterKnife.unbind(this);
}
/**
* Return the layout resource like R.layout.my_layout
*
* @return the layout resource or zero ("0"), if you don't want to have an UI
*/
@LayoutRes
protected int getLayoutRes() {
return 0;
}
}