package com.diandi.demo.ui.fragment;
import android.content.Intent;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.Handler;
import android.support.v4.app.Fragment;
import android.text.TextUtils;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.Toast;
import com.diandi.demo.CustomApplication;
import com.diandi.demo.R;
import com.diandi.demo.model.User;
import com.diandi.demo.sync.UserHelper;
import com.diandi.demo.util.OverridePendingUtil;
import com.diandi.demo.widget.HeaderLayout;
import com.diandi.demo.widget.HeaderLayout.HeaderStyle;
import com.diandi.demo.widget.HeaderLayout.onLeftImageButtonClickListener;
import com.diandi.demo.widget.HeaderLayout.onRightImageButtonClickListener;
import cn.bmob.im.BmobChatManager;
import cn.bmob.im.BmobUserManager;
/**
* *******************************************************************************
* ********* Author : klob(kloblic@gmail.com) .
* ********* Date : 2014-11-29 .
* ********* Time : 11:46 .
* ********* Project name : Diandi1.18 .
* ********* Version : 1.0
* ********* Copyright @ 2014, klob, All Rights Reserved
* *******************************************************************************
*/
public abstract class BaseFragment extends Fragment {
public final String TAG = ((Object) this).getClass().getSimpleName();
protected BmobUserManager userManager;
protected BmobChatManager manager;
protected CustomApplication mApplication;
protected HeaderLayout mHeaderLayout;
protected LayoutInflater mInflater;
protected Toast mToast;
private Handler handler = new Handler();
public Object getCache(String cacheKey) {
return CustomApplication.getInstance().getCache().getAsObject(cacheKey);
}
public void putCache(String cacheKey, Object... obj) {
if (obj != null)
CustomApplication.getInstance().getCache().put(cacheKey, obj);
}
abstract void initView();
abstract void findView();
abstract void bindEvent();
public void runOnWorkThread(Runnable action) {
new Thread(action).start();
}
public void runOnUiThread(Runnable action) {
handler.post(action);
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setRetainInstance(true);
mApplication = CustomApplication.getInstance();
userManager = BmobUserManager.getInstance(getActivity());
manager = BmobChatManager.getInstance(getActivity());
mInflater = LayoutInflater.from(getActivity());
}
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
}
public void LogE(Object object) {
Log.e(TAG, object.toString());
}
public void LogE(String str) {
Log.e(TAG, str);
}
public void ShowToast(final String text) {
if (!TextUtils.isEmpty(text)) {
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
if (mToast == null && getActivity() != null) {
mToast = Toast.makeText(getActivity(), text, Toast.LENGTH_LONG);
} else {
mToast.setText(text);
}
mToast.show();
} catch (Exception e) {
e.printStackTrace();
}
}
});
}
}
public void ShowToast(final int resId) {
runOnUiThread(new Runnable() {
@Override
public void run() {
try {
if (mToast == null) {
mToast = Toast.makeText(getActivity().getApplicationContext(), resId,
Toast.LENGTH_LONG);
} else {
mToast.setText(resId);
}
mToast.show();
Log.d(TAG, getString(resId));
} catch (Resources.NotFoundException e) {
e.printStackTrace();
}
}
});
}
public View findViewById(int paramInt) {
return getView().findViewById(paramInt);
}
public void initTopBarForOnlyTitle(String titleName) {
mHeaderLayout = (HeaderLayout) findViewById(R.id.common_actionbar);
mHeaderLayout.init(HeaderStyle.DEFAULT_TITLE);
mHeaderLayout.setDefaultTitle(titleName);
}
public void initTopBarForBoth(String titleName, int rightDrawableId,
onRightImageButtonClickListener listener) {
mHeaderLayout = (HeaderLayout) findViewById(R.id.common_actionbar);
mHeaderLayout.init(HeaderStyle.TITLE_DOUBLE_IMAGEBUTTON);
mHeaderLayout.setTitleAndLeftImageButton(titleName,
R.drawable.base_action_bar_back_bg_selector,
new OnLeftButtonClickListener());
mHeaderLayout.setTitleAndRightImageButton(titleName, rightDrawableId,
listener);
}
public void initTopBarForLeft(String titleName) {
mHeaderLayout = (HeaderLayout) findViewById(R.id.common_actionbar);
mHeaderLayout.init(HeaderStyle.TITLE_LIFT_IMAGEBUTTON);
mHeaderLayout.setTitleAndLeftImageButton(titleName,
R.drawable.base_action_bar_back_bg_selector,
new OnLeftButtonClickListener());
}
public void initTopBarForRight(String titleName, int rightDrawableId,
onRightImageButtonClickListener listener) {
mHeaderLayout = (HeaderLayout) findViewById(R.id.common_actionbar);
mHeaderLayout.init(HeaderStyle.TITLE_RIGHT_IMAGEBUTTON);
mHeaderLayout.setTitleAndRightImageButton(titleName, rightDrawableId,
listener);
}
public void startAnimActivity(Intent intent) {
getActivity().startActivity(intent);
OverridePendingUtil.in(getActivity());
}
public void startAnimActivity(Class<?> cla) {
getActivity().startActivity(new Intent(getActivity(), cla));
OverridePendingUtil.in(getActivity());
}
public User getCurrentUser() {
return UserHelper.getCurrentUser(getActivity());
}
public class OnLeftButtonClickListener implements
onLeftImageButtonClickListener {
@Override
public void onClick() {
getActivity().finish();
}
}
}