Android BaseActivity 分享
在Android开发中,为了更好的对栈堆中的Activity进行管理以及更有效的对程序中可复用的方法进行复用,我们通常会为程序写一个Activity的基类,这次我就分享一个Activity基类的基本写法。希望能够帮助到兄弟姐妹们。
在开发的过程中,Activity通常会使用到FragmentActivity而FragmentActivity是继承Activity的所以们新建一个Activity让他继承FragmentActivity。
import android.os.Bundle;
import android.support.v4.app.FragmentActivity;
public class KxActivity extends FragmentActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
}
}
接下来,我们给他加上一些通用的方法,让你的代码结构更加清晰,简洁。
首先,写一个接口,让KxActivity进行实现,覆写里面的方法:
public interface Interface_KxActivity {
/**
* 初始化界面 (在这里进行layout设置)
*/
void initRoot();
/**
* 初始化控件
*/
void stupView();
/**
* 初始化数据
*/
void stupData();
/**
* 点击事件回调方法
* @param view 被点击的控件
*/
void viewClick(View view);
/**
* 设置是否是碎片Activity
* @param is
*/
void isFragmentActivity(boolean is);
}
好了,那么我们再来写一个跳转页面以及关闭应用的接口:
public interface Show_KxActivity {
/**
* 关闭当前Activity跳转
* @param activity 当前Activity
* @param cls 要跳转的Activity
*/
void finshTogo(Activity activity, Class<?> cls);
/**
* 关闭当前Activity跳转
* @param activity 当前Activity
* @param intent intent活动
*/
void finshTogo(Activity activity, Intent intent);
/**
* 关闭当前Activity跳转
* @param activity 当前Activity
* @param cls 要跳转的Activity
* @param bundle Bundle对象
*/
void finshTogo(Activity activity, Class<?> cls, Bundle bundle);
/**
* 不关闭当前Activity跳转
* @param activity 当前Activity
* @param cls 要跳转的Activity
*/
void keepTogo(Activity activity, Class<?> cls);
/**
* 不关闭当前Activity跳转
* @param activity 当前Activity
* @param intent intent活动
*/
void keepTogo(Activity activity, Intent intent);
/**
* 不关闭当前Activity跳转
* @param activity 当前Activity
* @param cls 要跳转的Activity
* @param bundle Bundle对象
*/
void keepTogo(Activity activity, Class<?> cls, Bundle bundle);
/**
* 结果返回页面跳转
* @param intent Intent对象
* @param requestCode 访问代码
*/
void forResultTogo(Intent intent,int requestCode);
/**
* 接收跳转页面的结果
* @param requestCode 访问代码
* @param resultCode 返回代码
* @param intent Intent对象
*/
void OnKxActivityResult(int requestCode, int resultCode, Intent intent);
/**
* 杀死整个程序
*/
void finishApp();
}
这些都写好了之后我们还有个比较常用的,那就是logcat,这里我也把它写成一个接口,这里我们进行配置是否打印logcat等处理,这里我只写了个logcat,其他的以后慢慢完善:
public interface Configer_KxActivity {
/**
* 设置是否显示debug logcat
* @param isDebug 是否显示debug数据
*/
void setIsDebug(boolean isDebug);
}
ok,接下来我们再把Logcat封装一下,这里我借鉴了一位大神的封装,并进行了一些改动,毕竟好东西要大家分享嘛。。不过现在我没找到这个的链接了,如果有冒犯的地方还请见谅,一共三个类,我还是贴出来大家学习指正下:
import android.text.TextUtils;
import android.util.Log;
import org.json.JSONArray;
import org.json.JSONException;
import org.json.JSONObject;
import java.util.Collection;
import java.util.Iterator;
import java.util.Map;
import java.util.Set;
/**
* Created by ouqikang on 15/11/16.
*/
public class Logger implements Printer{
private static final int DEBUG = 1;
private static final int ERROR = 2;
private static final int VERBOSE = 3;
private static final int ASSERT = 4;
private static final int INFO = 5;
private static final int WARN = 6;
private static final int JSON = 7;
private static final int OBJECT = 8;
private static final String LINE_SEPARATOR = System.getProperty("line.separator");
private static final char TOP_LEFT_CORNER = '╔';
private static final char BOTTOM_LEFT_CORNER = '╚';
private static final char MIDDLE_CORNER = '╟';
private static final char HORIZONTAL_DOUBLE_LINE = '║';
private static final String DOUBLE_DIVIDER = "════════════════════════════════════════════";
private static final String SI