package com.mfh.comna.view;
import android.app.ActionBar;
import android.app.Activity;
import android.app.ProgressDialog;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Toast;
import com.mfh.comna.comn.logic.IBaseViewComponent;
import com.mfh.comna.comn.logic.ISubActivityMenuCheck;
import com.mfh.comna.comn.logic.MyMultiAsyncTask;
import com.mfh.comna.comn.logic.UpdateResultsRunable;
import com.mfh.comna.utils.DialogUtil;
import com.umeng.analytics.MobclickAgent;
import butterknife.ButterKnife;
/**
* 普通activity基类
* 采用自定义actionbar,home按钮默认返回到上一个页面。
* @author zhangyz created on 2013-4-5
* @since Framework 1.0
*/
public abstract class BaseComnActivity extends Activity implements OnClickListener,
IBaseViewComponent<Object, Object>,ISubActivityMenuCheck {
protected ActionBar mActionBar;//自定义actionBar
private Handler mHandler = null;//用于异步更新界面
private DialogUtil dialogUtil;
private final String mPageName = this.getClass().getSimpleName();
/**
* 获取面板的layout布局号
* @return
* @author zhangyz created on 2013-4-5
*/
public abstract int getLayoutId();
/**
* 设置标题,返回null默认使用AndroidManifest.xml中设置的标题
* @return
* @author zhangyz created on 2013-4-10
*/
protected void initActionBar(ActionBar actionBar) {
actionBar.setDisplayHomeAsUpEnabled(true); //默认Activity可返回
}
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
/*android.view.ActionBar aBar = this.getActionBar();
if (aBar != null)
aBar.hide();*/
setContentView(getLayoutId());
ButterKnife.bind(this);
mActionBar = this.getActionBar();// (ActionBar)this.findViewById(R.id.gd_action_bar);
if (mActionBar != null)
initActionBar(mActionBar);
//SDK在统计Fragment时,需要关闭Activity自带的页面统计,
//然后在每个页面中重新集成页面统计的代码(包括调用了 onResume 和 onPause 的Activity)。
MobclickAgent.openActivityDurationTrack(false);
//MobclickAgent.setAutoLocation(true);
//MobclickAgent.setSessionContinueMillis(1000);
//发送策略定义了用户由统计分析SDK产生的数据发送回友盟服务器的频率
MobclickAgent.updateOnlineConfig(this);
}
@Override
protected void onResume() {
super.onResume();
MobclickAgent.onPageStart(mPageName);
MobclickAgent.onResume(this);
}
@Override
protected void onPause() {
super.onPause();
MobclickAgent.onPageEnd(mPageName);
MobclickAgent.onPause(this);
}
protected DialogUtil getDialogUtil() {
if (dialogUtil == null)
dialogUtil = new DialogUtil(this);
return dialogUtil;
}
@Override
public boolean onCreateOptionsMenu(Menu menu) {
return true;
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case android.R.id.home:
/*
* Intent intent = new Intent(this, MainActivity.class);
* intent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); startActivity(intent);
*/
this.setResult(RETURN_CODE_NULL, null);//返回为0
this.finish();//结束当前activity
return true;
default:
return super.onOptionsItemSelected(item);
}
}
/**
* 提示消息,稍后自动关闭
* @param message 提示消息
* @author zhangyz created on 2013-4-12
*/
protected void showHint(CharSequence message) {
getDialogUtil().showHint(message);
}
/**
* 提示消息,点击确定后关闭
* @param message 提示消息
*/
protected void showMessage(CharSequence message){
getDialogUtil().showMessage(message);
}
protected void showYesNoDialog(CharSequence message, DialogInterface.OnClickListener listen) {
getDialogUtil().showYesNoDialog(message, listen);
}
/**
* 显示一个典型的两按钮的询问对话框
* @param title
* @param message
* @return ture:选择了是: false:选择了否
* @author zhangyz created on 2013-4-5
*/
protected void showYesNoDialog(CharSequence title, CharSequence message,
DialogInterface.OnClickListener listen) {
getDialogUtil().showYesNoDialog(title, message, listen);
}
@Override
public void doAsyncTask() {
new MyMultiAsyncTask<Object, Object>(this).execute();
}
@Override
public void doAsyncTaskWithParam(Object... param) {
new MyMultiAsyncTask<Object, Object>(this).execute(param);
}
@Override
public void doAsyncTask(int taskKind) {
new MyMultiAsyncTask<Object, Object>(this, taskKind).execute();
}
@Override
public void doAsyncTask(int taskKind, Object... param) {
new MyMultiAsyncTask<Object, Object>(this, taskKind).execute(param);
}
@Override
public void doAsyncUpdateUi(Object... param) {
if (mHandler == null)
mHandler = new Handler();
mHandler.post(new UpdateResultsRunable<Object>(this, param));
}
@Override
public Object doInBackground(int taskKind, Object... params) {
return null;
}
@Override
public void onPostExecute(int taskKind, Object result, Object...params) {
}
@Override
public ProgressDialog onPreExecute(int taskKind) {
// 开启进度条
return ProgressDialog.show(this, "请稍等...", "正在处理中...", true);
}
@Override
public void onProgressUpdate(int taskKind, Integer... values) {
// TODO Auto-generated method stub
}
@Override
public void doInBackgroundException(int taskKind, Throwable ex, Object... params) {
Toast.makeText(this, "执行出错:" + ex.getMessage(), Toast.LENGTH_SHORT).show();
}
@Override
public void onClick(View view) {
}
@Override
public boolean OnOptionsMenuItemCheck(int groupId, int menuId) {
return true;
}
@Override
public boolean setGroupVisible(Menu menu) {
return false;
}
}