package com.lean56.andplug.fragment;
import android.os.Bundle;
import android.view.*;
import android.view.animation.AnimationUtils;
import com.lean56.andplug.activity.BaseActivity;
import com.umeng.analytics.MobclickAgent;
/**
* Base Fragment offers
* umeng analytics
* home optional selected
*
* @author Charles
*/
public abstract class BaseFragment extends android.support.v4.app.Fragment {
/**
* Is this fragment usable from the UI-thread
*
* @return true if usable, false otherwise
*/
protected boolean isUsable() {
return getActivity() != null;
}
/**
* Get content view to be used when {@link #onCreate(Bundle)} is called
*
* @return layout resource id
*/
protected abstract int getContentView();
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return inflater.inflate(getContentView(), container, false);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
initArgument();
}
/**
* init argument
*/
protected void initArgument() {
// blank
}
// [+] title
private String mTitle;
public void setTitle(String title) {
this.mTitle = title;
getActivity().setTitle(title);
}
public String getTitle() {
return mTitle;
}
private String mSubTitle;
public void setSubTitle(String subTitle) {
this.mSubTitle = subTitle;
((BaseActivity)getActivity()).setSubTitle(subTitle);
}
public String getSubTitle() {
return mSubTitle;
}
// [-] title
// [+] Options Menu
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
addMenuItem(menu);
super.onCreateOptionsMenu(menu, inflater);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
if (!isUsable())
return false;
switch (item.getItemId()) {
case (android.R.id.home):
getActivity().onBackPressed();
return true;
case Menu.FIRST:
return onFirstMenuSelected(item);
default:
return super.onOptionsItemSelected(item);
}
}
/**
* add single menu item
* @param menu
* @return
*/
protected void addMenuItem(Menu menu) {
// add menu like this
// menu.add(Menu.NONE, Menu.FIRST, Menu.NONE, R.string.register).setIcon(R.drawable.ic_action_add).setShowAsAction(MenuItem.SHOW_AS_ACTION_ALWAYS);
}
/**
* on first menu selected/click event
* @param item
* @return
*/
protected boolean onFirstMenuSelected(MenuItem item) {
return false;
}
// [-] Options Menu
// [+] umeng analytics
@Override
public void onResume() {
super.onResume();
MobclickAgent.onPageStart(getClass().getSimpleName());
}
@Override
public void onPause() {
super.onPause();
MobclickAgent.onPageEnd(getClass().getSimpleName());
}
// [-] umeng analytics
// [+] view utils
public BaseFragment fadeIn(View view, boolean animate) {
if (view != null)
if (animate)
view.startAnimation(AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_in));
else
view.clearAnimation();
return this;
}
public BaseFragment fadeOut(View view, boolean animate) {
if (view != null)
if (animate)
view.startAnimation(AnimationUtils.loadAnimation(getActivity(), android.R.anim.fade_out));
else
view.clearAnimation();
return this;
}
public BaseFragment show(View view) {
view.setVisibility(View.VISIBLE);
return this;
}
public BaseFragment hide(View view) {
view.setVisibility(View.GONE);
return this;
}
// [-] view utils
}