AriesHoo / FastLib

一个Android项目级快速开发框架,节约大部分写常用功能时间以实现更多项目业务功能及体验上的优化。使用说明见wiki
https://github.com/AriesHoo/FastLib/wiki
Apache License 2.0
490 stars 95 forks source link

这个框架动不动就崩怎么回事啊 #71

Closed xiaochunzhi closed 3 years ago

xiaochunzhi commented 3 years ago

@BindView(R.id.textView) TextView textView;

这样写textView都能是空

AriesHoo commented 3 years ago

这个应该是ButterKnife 配置哪里出错了,你好好对比下demo和你自己的项目呢,和FastLib无关的

xiaochunzhi commented 3 years ago

好的,希望FastList多一点关于fragment相关封装

AriesHoo commented 3 years ago

关于Fragment有什么特殊的需求?

xiaochunzhi commented 3 years ago

可以参考一下这个 // 启动模式 public static final int STANDARD = 0; public static final int SINGLETOP = 1; public static final int SINGLETASK = 2; // ResultCode public static final int RESULT_CANCELED = 0; public static final int RESULT_OK = -1; private static final long SHOW_SPACE = 200L; private static final long DEFAULT_ANIM_DURATION = 300L; private Bundle mNewBundle; protected boolean mIsRoot, mIsSharedElement; private boolean mIsHidden = true; // 用于记录Fragment show/hide 状态

// SupportVisible
private VisibleDelegate mVisibleDelegate;
protected Bundle mSaveInstanceState;
private InputMethodManager mIMM;
private boolean mNeedHideSoft;  // 隐藏软键盘

protected BaseActivity mActivity;
protected FragmentationDelegate mFragmentationDelegate;
private int mContainerId;   // 该Fragment所处的Container的id
private FragmentAnimator mFragmentAnimator;
private AnimatorHelper mAnimHelper;

protected boolean mLocking; // 是否加锁 用于Fragmentation-SwipeBack库
private OnFragmentDestroyViewListener mOnDestroyViewListener;
private TransactionRecord mTransactionRecord;
protected View mRootView;
protected Context context;
protected static final int REQUEST_CODE_CAMERA = 2;
protected static final int REQUEST_CODE_LOCAL = 3;
protected File cameraFile;
public View statusView;
protected Unbinder unbinder;

@IntDef({STANDARD, SINGLETOP, SINGLETASK})
@Retention(RetentionPolicy.SOURCE)
@interface LaunchMode {
}

@Nullable
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
    mRootView = inflater.inflate(getLayoutId(), container, false);
    unbinder = ButterKnife.bind(this, mRootView);
    return mRootView;
}

/**
 * @return XML中的布局文件
 */
protected abstract int getLayoutId();

/**
 * Called when the fragment inflate the view complete.
 *
 * @param savedInstanceState {@link Bundle}
 */
protected abstract void viewCreate(Bundle savedInstanceState);

/**
 * 隐藏软键盘
 */
protected void hideSoftKeyboard() {
    if (getView() != null) {
        initImm();
        mIMM.hideSoftInputFromWindow(getView().getWindowToken(), 0);
    }
}

/**
 * 从图库获取图片
 *
 * @param selectCount 选择数量
 * @param isSingle    是否单选
 */
public void startAlbum(int selectCount, boolean isSingle) {

// Intent intent = new Intent(mActivity, MultiImageSelectorActivity.class); // // 是否显示调用相机拍照 // intent.putExtra(MultiImageSelectorActivity.EXTRA_SHOW_CAMERA, false); // // 最大图片选择数量 // intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_COUNT, selectCount); // // 设置模式 (支持 单选/MultiImageSelectorActivity.MODE_SINGLE 或者 多选/MultiImageSelectorActivity.MODE_MULTI) // if (isSingle) { // intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_MODE, MultiImageSelectorActivity.MODE_SINGLE); // } else { // intent.putExtra(MultiImageSelectorActivity.EXTRA_SELECT_MODE, MultiImageSelectorActivity.MODE_MULTI); // } // startActivityForResult(intent, REQUEST_CODE_LOCAL); Matisse .from(this) //选择视频和图片 .choose(MimeType.ofImage()) //是否只显示选择的类型的缩略图,就不会把所有图片视频都放在一起,而是需要什么展示什么 .showSingleMediaType(true) //这两行要连用 是否在选择图片中展示照相 和适配安卓7.0 FileProvider .capture(false) .captureStrategy(new CaptureStrategy(true,"PhotoPicker")) //有序选择图片 123456... .countable(true) //最大选择数量为9 .maxSelectable(selectCount) //选择方向 .restrictOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT) //界面中缩略图的质量 .thumbnailScale(0.8f) //蓝色主题 .theme(R.style.Matisse_Zhihu) //Glide加载方式 .imageEngine(new GlideEngine()) //请求码 .forResult(REQUEST_CODE_LOCAL); } /**

AriesHoo commented 3 years ago

这么多业务

xiaochunzhi commented 3 years ago

其实就是一些启动fragment和退出fragment ,还有fragment的生命周期的管理,