一,前言:在常用的APP中,大致也就是这种写法,平时开项目的时候也常用,所以写在这里。用的时候这复制,然后再根据具体的业务逻辑更改下。如下
BaseActivity
public abstract class BaseActivity extends AppCompatActivity {
/***封装toast对象**/
private static Toast toast;
/***获取TAG的activity名称**/
protected final String TAG = this.getClass().getSimpleName();
@Override
public void onCreate(@Nullable Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(setLyoutId());
initLogger();
initView();
initDate();
}
public void initLogger(){
Logger.init(TAG) //LOG TAG默认是PRETTYLOGGER
.methodCount(3) // 决定打印多少行(每一行代表一个方法)默认:2
.hideThreadInfo() // 隐藏线程信息 默认:显示
.logLevel(LogLevel.NONE) // 是否显示Log 默认:LogLevel.FULL(全部显示)
.methodOffset(2); // 默认:0
}
/**
* 所有初始化的空间放这个里面。
* @param
*/
public abstract void initView();
public abstract int setLyoutId();
/**
* 数据初始化
*/
public abstract void initDate();
@Override
public void onRestart() {
super.onRestart();
Logger.d(TAG, "onRestart: 重启" );
}
@Override
public void onStart() {
super.onStart();
Logger.d(TAG, "onRestart: 启动" );
}
@Override
public void onResume() {
super.onResume();
Logger.d(TAG, "onRestart: 绘制" );
}
@Override
public void onPause() {
super.onPause();
Logger.d(TAG, "onRestart: 暂停" );
}
@Override
public void onStop() {
super.onStop();
Logger.d(TAG, "onRestart: 停止" );
}
@Override
public void onDestroy() {
super.onDestroy();
Log.d(TAG, "onRestart: 销毁" );
}
/**
* 显示长toast
* @param msg
*/
public void tLong(String msg){
if (null == toast) {
toast = new Toast(this);
toast.setDuration(Toast.LENGTH_LONG);
toast.setText(msg);
toast.show();
} else {
toast.setText(msg);
toast.show();
}
}
/**
* 显示短toast
* @param msg
*/
public void tShort(String msg){
if (null == toast) {
toast = new Toast(this);
toast.setDuration(Toast.LENGTH_SHORT);
toast.setText(msg);
toast.show();
} else {
toast.setText(msg);
toast.show();
}
}
/**
* 跳转页面
*
* @param clz 所跳转的目的Activity类
*/
public void startActivity(Class<?> clz) {
startActivity(new Intent(this, clz));
}
/**
* 跳转页面
*
* @param clz 所跳转的Activity类
* @param requestCode 请求码
*/
public void startActivityForResult(Class<?> clz, int requestCode) {
startActivityForResult(new Intent(this, clz), requestCode);
}
/**
* 跳转页面
*
* @param clz 所跳转的目的Activity类
* @param bundle 跳转所携带的信息
*/
public void startActivity(Class<?> clz, Bundle bundle) {
Intent intent = new Intent(this, clz);
if (bundle != null) {
intent.putExtra("bundle", bundle);
}
startActivity(intent);
}
/**
* 跳转页面
*
* @param clz 所跳转的Activity类
* @param bundle 跳转所携带的信息
* @param requestCode 请求码
*/
public void startActivityForResult(Class<?> clz, int requestCode, Bundle bundle) {
Intent intent = new Intent(this, clz);
if (bundle != null) {
intent.putExtra("bundle", bundle);
}
startActivityForResult(intent, requestCode);
}
}
BaseFragment
public abstract class BaseFragment extends Fragment {
protected BaseActivity mActivity;
protected final String TAG = this.getClass().getSimpleName();
@Override
public void onAttach(Context Context) {
super.onAttach(Context);
mActivity = (BaseActivity) Context;
Logger.d(TAG + ":onAttach:附加");
}
@Override
public void setUserVisibleHint(boolean isVisibleToUser) {
if (isVisibleToUser){
Logger.d(TAG + "不涉及UI:setUserVisibleHint:可见");
}
}
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Logger.d(TAG + ":onCreate");
}
// @Nullable
// @Override
// public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
// View view = inflater.inflate(setView(), container, false);
// return view;
// }
@Nullable
@Override
public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
Logger.d(TAG + ":onCreateView:创建视图");
return super.onCreateView(inflater, container, savedInstanceState);
}
@Override
public void onViewCreated(View view, Bundle savedInstanceState) {
super.onViewCreated(view, savedInstanceState);
Logger.d(TAG + ":onViewCreated:视图创建完毕");
// init(view);
}
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
initData(savedInstanceState);
Logger.d(TAG + ":onActivityCreated:页面完成");
}
@Override
public void onStart() {
super.onStart();
Logger.d(TAG + ":onStart: 启动");
if (getUserVisibleHint()){//涉及到UI
Logger.d(TAG + ":onStart: 涉及到UI的数据填充。");
httpDate();
}
}
@Override
public void onResume() {
super.onResume();
Logger.d(TAG + ":onResume:绘制");
}
@Override
public void onPause() {
super.onPause();
Logger.d(TAG + ":onPause: 暂停");
}
@Override
public void onStop() {
super.onStop();
Logger.d(TAG + ":onStop: 停止");
}
@Override
public void onDestroyView() {
super.onDestroyView();
Logger.d(TAG + ":onDestroyView:销毁视图");
}
@Override
public void onDestroy() {
super.onDestroy();
Logger.d(TAG + ":onDestroy: 销毁整个页面");
}
@Override
public void onDetach() {
super.onDetach();
Logger.d(TAG + ":onDetach:分离");
}
// protected abstract int setView();
// protected abstract void init(View view);
protected abstract void initData(Bundle savedInstanceState);
/**
* 需要更新UI的网络数据
*/
protected abstract void httpDate();
这里,有一个脚手架,每次直接调用就可以了。github-BaseAndroid