package com.yuyh.sprintnba.base;
import android.app.Activity;
import android.content.Context;
import android.os.Bundle;
import android.support.v4.app.Fragment;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import java.lang.reflect.Field;
public class BaseFragment extends Fragment {
protected LayoutInflater inflater;
private View contentView;
private Context context;
private ViewGroup container;
public Activity mActivity;
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
context = getActivity().getApplicationContext();
mActivity = getActivity();
}
@Override
public final View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
this.inflater = inflater;
this.container = container;
onCreateView(savedInstanceState);
if (contentView == null)
return super.onCreateView(inflater, container, savedInstanceState);
return contentView;
}
protected void onCreateView(Bundle savedInstanceState) {
}
@Override
public void onDestroyView() {
super.onDestroyView();
contentView = null;
container = null;
inflater = null;
}
public Context getApplicationContext() {
return context;
}
public void setContentView(int layoutResID) {
setContentView((ViewGroup) inflater.inflate(layoutResID, container, false));
}
public void setContentView(View view) {
contentView = view;
}
public View getContentView() {
return contentView;
}
public View findViewById(int id) {
if (contentView != null)
return contentView.findViewById(id);
return null;
}
// http://stackoverflow.com/questions/15207305/getting-the-error-java-lang-illegalstateexception-activity-has-been-destroyed
@Override
public void onDetach() {
super.onDetach();
try {
Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager");
childFragmentManager.setAccessible(true);
childFragmentManager.set(this, null);
} catch (NoSuchFieldException e) {
throw new RuntimeException(e);
} catch (IllegalAccessException e) {
throw new RuntimeException(e);
}
}
}