BaseFragment.java 3.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  1. package com.android.chmo.base;
  2. import android.content.Context;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.support.v4.app.Fragment;
  6. import android.view.LayoutInflater;
  7. import android.view.View;
  8. import android.view.ViewGroup;
  9. import com.android.chmo.R;
  10. import butterknife.ButterKnife;
  11. /**
  12. * Created by Administrator on 2018/7/30.
  13. */
  14. public abstract class BaseFragment extends Fragment {
  15. private View mLayoutView;
  16. public boolean isVisible;
  17. /**
  18. * 初始化布局
  19. */
  20. public abstract int getLayoutRes();
  21. /**
  22. * 初始化视图
  23. */
  24. public abstract void initView();
  25. @Override
  26. public Context getContext() {
  27. return getBaseActivity().getContext();
  28. }
  29. @Override
  30. public void onCreate(Bundle savedInstanceState) {
  31. super.onCreate(savedInstanceState);
  32. }
  33. @Override
  34. public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
  35. if (mLayoutView != null) {
  36. ViewGroup parent = (ViewGroup) mLayoutView.getParent();
  37. if (parent != null) {
  38. parent.removeView(mLayoutView);
  39. }
  40. } else {
  41. mLayoutView = getCreateView(inflater, container);
  42. ButterKnife.bind(this, mLayoutView);
  43. initView(); //初始化布局
  44. }
  45. return mLayoutView;
  46. }
  47. @Override
  48. public void setUserVisibleHint(boolean isVisibleToUser) {
  49. super.setUserVisibleHint(isVisibleToUser);
  50. isVisible = isVisibleToUser;
  51. if (isVisibleToUser) {
  52. onVisible();
  53. } else {
  54. onInvisible();
  55. System.gc();
  56. System.runFinalization();
  57. }
  58. }
  59. public void onVisible() {
  60. }
  61. public void onInvisible(){
  62. }
  63. /**
  64. * 获取Fragment布局文件的View
  65. *
  66. * @param inflater
  67. * @param container
  68. * @return
  69. */
  70. private View getCreateView(LayoutInflater inflater, ViewGroup container) {
  71. return inflater.inflate(getLayoutRes(), container, false);
  72. }
  73. /**
  74. * 获取当前Fragment状态
  75. *
  76. * @return true为正常 false为未加载或正在删除
  77. */
  78. private boolean getStatus() {
  79. return (isAdded() && !isRemoving());
  80. }
  81. /**
  82. * 获取Activity
  83. *
  84. * @return
  85. */
  86. public BaseActivity getBaseActivity() {
  87. return (BaseActivity) getActivity();
  88. }
  89. public void showToast(String msg) {
  90. if (getStatus()) {
  91. getBaseActivity().showToast(msg);
  92. }
  93. }
  94. public void showToast(int res) {
  95. showToast(getString(res));
  96. }
  97. public void showLoading() {
  98. getBaseActivity().showLoading();
  99. }
  100. public void showLoading(String msg) {
  101. getBaseActivity().showLoading(msg);
  102. }
  103. public void hideLoading() {
  104. getBaseActivity().hideLoading();
  105. }
  106. public void openPage(Class clazz) {
  107. getBaseActivity().openPage(clazz);
  108. }
  109. public void openPage(Intent intent) {
  110. getBaseActivity().openPage(intent);
  111. }
  112. public void openPageForResult(Intent intent, int requestCode) {
  113. startActivityForResult(intent, requestCode);
  114. getBaseActivity().overridePendingTransition(R.anim.push_right_in, R.anim.push_left_out);
  115. }
  116. public void close() {
  117. getBaseActivity().close();
  118. }
  119. }