在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問(wèn)答/Android/ 請(qǐng)教一個(gè)ButterKnife結(jié)合Fragment使用的問(wèn)題

請(qǐng)教一個(gè)ButterKnife結(jié)合Fragment使用的問(wèn)題

這樣提示RecyclerView找不到是怎么回事呢?我這里三個(gè)類(lèi),依次是SystemMessageFragment extends LazyFragment extends BaseFragment.下面是錯(cuò)誤日志和三個(gè)類(lèi)
圖片描述

SystemMessageFragment

public class SystemMessageFragment extends LazyFragment {

    @BindView(R.id.rv_message_system)
    RecyclerView mRecyclerView;

    private List<String> mDatas;
    private SystemMessageAdapter mAdapter;

    @Override
    public int contentViewId() {
        return R.layout.fragment_system_message;
    }

    @Override
    public void initView(Bundle savedInstanceState, View view) {
//        ButterKnife.bind(this,view);
    }

    @Override
    protected void onLazyLoad() {
        mDatas = new ArrayList<>();
        for (int i = 0; i < 5; i++) {
            mDatas.add("數(shù)據(jù)" + i);
        }
        mAdapter = new SystemMessageAdapter(R.layout.item_message_system, mDatas);
        LinearLayoutManager linearLayoutManager = new LinearLayoutManager(getActivity());
        linearLayoutManager.setOrientation(LinearLayoutManager.VERTICAL);
        mRecyclerView.setLayoutManager(linearLayoutManager);
        mRecyclerView.setAdapter(mAdapter);
    }
}

LazyFragment:

public abstract class LazyFragment extends BaseFragment {

    private boolean isInit = false;

    private View mContainerView;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        //可見(jiàn)了但是沒(méi)初始化
        if (getUserVisibleHint() && !isInit) {
            mContainerView = super.onCreateView(inflater, container, savedInstanceState);
            isInit = true;
        } else {
            //不可見(jiàn),加載其他布局
            mContainerView = inflater.inflate(R.layout.lazy_loading, container, false);
            mContainerView.setBackgroundColor(lazyFragmentBackground());
        }
        return mContainerView;
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        if (!getUserVisibleHint() && !isInit) {
            return;
        }
        super.onViewCreated(view, savedInstanceState);
        if (isInit) {
            onLazyLoad();
        }
    }

    @Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isAdded()) { //回到生命周期
            //可見(jiàn)又初始化了
            if (isVisibleToUser && !isInit && mContainerView != null) {
                if (mContainerView instanceof ViewGroup) { //是不是viewgroup,然后移除那些簡(jiǎn)單view,加載重布局
                    ViewGroup group = ((ViewGroup) mContainerView);
                    group.removeAllViews();
                    View view = LayoutInflater.from(getActivity()).inflate(contentViewId(), group, false);
                    group.addView(view);
                    super.onViewCreated(mContainerView, null);
                    onLazyLoad();
                    isInit = true;
                }
            }

            if (isInit && mContainerView != null) {     //顯示隱藏的回調(diào)
                if (isVisibleToUser) {
                    onShowFragment();
                } else {
                    onHideFragment();
                }
            }
        }

    }

    protected abstract void onLazyLoad();

    protected int lazyFragmentBackground() {
        return ContextCompat.getColor(getActivity(), R.color.lazy_fragment_background);
    }

    protected void onShowFragment() {
    }

    protected void onHideFragment() {
    }


    @Override
    public void onDetach() {
        super.onDetach();
        isInit = false;
    }
}

BaseFragment:

public abstract class BaseFragment extends Fragment {

    private Unbinder mUnbinder;

    private TextView mTitleTv;
    private TextView mLeftMenuTv;
    private TextView mRightMenuTv;

    @Nullable
    @Override
    public View onCreateView(@NonNull LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
        return inflater.inflate(contentViewId(), container, false);
    }

    @Override
    public void onViewCreated(@NonNull View view, @Nullable Bundle savedInstanceState) {
        super.onViewCreated(view, savedInstanceState);
//        EventBusUtil.register(this);
        mUnbinder = ButterKnife.bind(this, view);
//        View toolbar = view.findViewById(R.id.toolbar);
//        if (toolbar != null) {
//            mTitleTv = toolbar.findViewById(R.id.title_tv);
//            mLeftMenuTv = toolbar.findViewById(R.id.left_menu_tv);
//            mRightMenuTv = toolbar.findViewById(R.id.right_menu_tv);
//            int height = StatusBarUtil.getStatusBarHeight(getActivity());
//            ViewGroup.LayoutParams viewGroup = toolbar.getLayoutParams();
//            viewGroup.height = getResources().getDimensionPixelSize(R.dimen.titlebar_height) + height;
//            toolbar.setPadding(toolbar.getPaddingLeft(), height,
//                    toolbar.getPaddingRight(), toolbar.getPaddingBottom());
//            toolbar.setPadding(0, height, 0, 0);
//        }
        initView(savedInstanceState, view);
        initEvent();
    }

    public abstract void initView(Bundle savedInstanceState, View view);

    public void initEvent() {
    }

    public abstract int contentViewId();


    protected void setLeftMenu(String leftMenuText) {
        if (mLeftMenuTv != null) {
            mLeftMenuTv.setText(leftMenuText);
        }
    }

    protected void setCenterTitle(String title) {
        if (mTitleTv != null) {
            mTitleTv.setText(title);
        }
    }

    protected void setRightMenu(String rightMenuText) {
        if (mRightMenuTv != null) {
            mRightMenuTv.setText(rightMenuText);
        }
    }

    protected void setLeftVisiable(boolean visiable) {
        if (mLeftMenuTv != null) {
            mLeftMenuTv.setVisibility(visiable ? View.VISIBLE : View.GONE);
        }
    }

    protected void seRightVisiable(boolean visiable) {
        if (mRightMenuTv != null) {
            mRightMenuTv.setVisibility(visiable ? View.VISIBLE : View.GONE);
        }
    }


    @Override
    public void onDestroy() {
        super.onDestroy();
        if (mUnbinder != null) {
            mUnbinder.unbind();
            mUnbinder = null;//解決比賽模塊頁(yè)面切換崩潰問(wèn)題
        }
//        EventBusUtil.unregister(this);
    }}
回答
編輯回答
賤人曾

是否是 @NonNull @Nullable 注解在作怪

2017年8月2日 04:01