/* * Copyright (C) 2013 WhiteCat 白猫 (www.thinkandroid.cn) * * Licensed under the Apache License, Version 2.0 (the "License"); * you may not use this file except in compliance with the License. * You may obtain a copy of the License at * * http://www.apache.org/licenses/LICENSE-2.0 * * Unless required by applicable law or agreed to in writing, software * distributed under the License is distributed on an "AS IS" BASIS, * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. * See the License for the specific language governing permissions and * limitations under the License. */ package com.ta; import com.ta.mvc.command.TAIdentityCommand; import com.ta.mvc.common.TAIResponseListener; import com.ta.mvc.common.TARequest; import com.ta.mvc.common.TAResponse; import com.ta.util.TALogger; import com.ta.util.netstate.TANetWorkUtil.netType; import android.app.Activity; import android.app.Dialog; import android.app.ProgressDialog; import android.os.Bundle; import android.view.View; import android.view.ViewGroup.LayoutParams; public abstract class TAActivity extends Activity { /** 模块的名字 */ private String moduleName = ""; /** 布局文件的名字 */ private String layouName = ""; private static final int DIALOG_ID_PROGRESS_DEFAULT = 0x174980; private static final String TAIDENTITYCOMMAND = "taidentitycommand"; @Override protected void onCreate(Bundle savedInstanceState) { notifiyApplicationActivityCreating(); onPreOnCreate(savedInstanceState); super.onCreate(savedInstanceState); getTAApplication().getAppManager().addActivity(this); initActivity(); onAfterOnCreate(savedInstanceState); notifiyApplicationActivityCreated(); } public TAApplication getTAApplication() { return (TAApplication) getApplication(); } private void notifiyApplicationActivityCreating() { getTAApplication().onActivityCreating(this); } private void notifiyApplicationActivityCreated() { getTAApplication().onActivityCreated(this); } protected void onPreOnCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub getTAApplication().registerCommand(TAIDENTITYCOMMAND, TAIdentityCommand.class); } private void initActivity() { // 初始化模块名 getModuleName(); // 初始化布局名 getLayouName(); // 加载类注入器 initInjector(); // 自动加载默认布局 loadDefautLayout(); } protected void onAfterOnCreate(Bundle savedInstanceState) { // TODO Auto-generated method stub } /** * 初始化注入器 */ private void initInjector() { // TODO Auto-generated method stub getTAApplication().getInjector().injectResource(this); getTAApplication().getInjector().inject(this); } /** * 自动加载默认布局 */ private void loadDefautLayout() { try { int layoutResID = getTAApplication().getLayoutLoader().getLayoutID( layouName); setContentView(layoutResID); } catch (Exception e) { // TODO: handle exception e.printStackTrace(); } } @Override public void setContentView(int layoutResID) { // TODO Auto-generated method stub super.setContentView(layoutResID); // 由于view必须在视图记载之后添加注入 getTAApplication().getInjector().injectView(this); onAfterSetContentView(); } public void setContentView(View view, LayoutParams params) { super.setContentView(view, params); // 由于view必须在视图记载之后添加注入 getTAApplication().getInjector().injectView(this); onAfterSetContentView(); } public void setContentView(View view) { super.setContentView(view); // 由于view必须在视图记载之后添加注入 getTAApplication().getInjector().injectView(this); onAfterSetContentView(); } protected void onAfterSetContentView() { // TODO Auto-generated method stub } /** * 获取模块的名字 */ public String getModuleName() { String moduleName = this.moduleName; if (moduleName == null || moduleName.equalsIgnoreCase("")) { moduleName = getClass().getName().substring(0, getClass().getName().length() - 8); String arrays[] = moduleName.split("\\."); this.moduleName = moduleName = arrays[arrays.length - 1] .toLowerCase(); } return moduleName; } /** * 设置模块的名字 */ public void setModuleName(String moduleName) { this.moduleName = moduleName; } /** * 获取布局文件名 * * @return布局文件名 */ public String getLayouName() { String layouName = this.layouName; if (layouName == null || layouName.equalsIgnoreCase("")) { this.layouName = this.moduleName; } return layouName; } /** * 设置布局文件名 */ protected void setLayouName(String layouName) { this.layouName = layouName; } public void preProcessData(TAResponse response) { } public void processData(TAResponse response) { } @Override protected Dialog onCreateDialog(int id) { switch (id) { case DIALOG_ID_PROGRESS_DEFAULT: ProgressDialog dlg = new ProgressDialog(this); // dlg.setProgressStyle(ProgressDialog.STYLE_SPINNER); dlg.setMessage("正在加载..."); dlg.setCancelable(true); return dlg; default: return super.onCreateDialog(id); } } public final void doCommand(int resId, TARequest request) { String commandKey = getString(resId); doCommand(commandKey, request, null, true); } public final void doCommand(String commandKey, TARequest request) { doCommand(commandKey, request, null, true); } public final void doCommand(int resId, TARequest request, TAIResponseListener listener) { String commandKey = getString(resId); doCommand(commandKey, request, listener, true); } public final void doCommand(String commandKey, TARequest request, TAIResponseListener listener) { doCommand(commandKey, request, listener, true); } public final void doCommand(int resId, TARequest request, TAIResponseListener listener, boolean showProgress) { String commandKey = getString(resId); TALogger.i(TAActivity.this, "go with cmdid=" + commandKey + ", request: " + request); doCommand(commandKey, request, listener, showProgress, true); } public final void doCommand(String commandKey, TARequest request, TAIResponseListener listener, boolean showProgress) { TALogger.i(TAActivity.this, "go with cmdid=" + commandKey + ", request: " + request); doCommand(commandKey, request, listener, showProgress, true); } public final void doCommand(int resId, TARequest request, TAIResponseListener listener, boolean showProgress, boolean record) { String commandKey = getString(resId); TALogger.i(TAActivity.this, "go with cmdid=" + commandKey + ", record: " + record + ", request: " + request); doCommand(commandKey, request, listener, showProgress, record, false); } public final void doCommand(String commandKey, TARequest request, TAIResponseListener listener, boolean showProgress, boolean record) { TALogger.i(TAActivity.this, "go with cmdid=" + commandKey + ", record: " + record + ", request: " + request); doCommand(commandKey, request, listener, showProgress, record, false); } public final void doCommand(int resId, TARequest request, TAIResponseListener listener, boolean showProgress, boolean record, boolean resetStack) { String commandKey = getString(resId); doCommand(commandKey, request, listener, showProgress, record, resetStack); } public final void doCommand(String commandKey, TARequest request, TAIResponseListener listener, boolean showProgress, boolean record, boolean resetStack) { if (showProgress) { showProgress(); } getTAApplication().doCommand(commandKey, request, listener, record, resetStack); } /** * 返回 */ public final void back() { getTAApplication().back(); } /** * 需要自定义进度条,请重写 */ protected void showProgress() { showDialog(DIALOG_ID_PROGRESS_DEFAULT); } /** * 隐藏进度跳,需要重写的请重写 */ protected void hideProgress() { try { removeDialog(DIALOG_ID_PROGRESS_DEFAULT); } catch (IllegalArgumentException iae) { } } /** * 网络连接连接时调用 */ public void onConnect(netType type) { } /** * 当前没有网络连接 */ public void onDisConnect() { } @Override public void finish() { // TODO Auto-generated method stub getTAApplication().getAppManager().removeActivity(this); super.finish(); } /** * 退出应用程序 * * @param isBackground * 是否开开启后台运行,如果为true则为后台运行 */ public void exitApp(Boolean isBackground) { getTAApplication().exitApp(isBackground); } /** * 退出应用程序 * */ public void exitApp() { getTAApplication().exitApp(false); } /** * 退出应用程序,且在后台运行 * */ public void exitAppToBackground() { getTAApplication().exitApp(true); } /** * 运行activity * * @param activityResID */ public final void doActivity(int activityResID) { doActivity(activityResID, null); } public final void doActivity(int activityResID, Bundle bundle) { TARequest request = new TARequest(); request.setData(bundle); request.setActivityKeyResID(activityResID); // 启动activity doCommand(TAIDENTITYCOMMAND, request); } @Override public void onBackPressed() { back(); } }