Closed Vancons closed 4 years ago
changeUiStatusIgnore方法应该放在bindFragment方法之后再去调用。 你先调用mUiStatus.changeUiStatusIgnore(UiStatus.CONTENT);方法想要显示内容视图,这个时候内容视图还没有绑定肯定会空指针,你是在调用这个方法后面才调用的mUiStatus.bindFragment(view)方法区绑定的内容视图。
@FengChenSunshine 是的 ,把changeUiStatusIgnore注释掉,然后再子类的initContentView 中使用 mUiStatus.changeUiStatus 或者 mUiStatus.showWidget 时还是报空。是不是初始化时有问题? //初始化 UiStatusManager uiStatusManager = UiStatusManager.getInstance(); uiStatusManager.addUiStatusConfig(UiStatus.EMPTY, R.layout.layout_empty_view, R.id.tv_retry_loading, new OnRetryListener() { @Override public void onUiStatusRetry(@NonNull Object target, @NonNull IUiStatusController controller, @NonNull View trigger) { controller.changeUiStatus(UiStatus.LOADING); } }).setWidgetMargin(UiStatus.EMPTY,50,0) .addUiStatusConfig(UiStatus.NETWORK_ERROR, R.layout.layout_nonetwork_view, R.id.tv_retry_loading, new OnRetryListener() { @Override public void onUiStatusRetry(@NonNull Object target, @NonNull IUiStatusController controller, @NonNull View trigger) { controller.changeUiStatus(UiStatus.LOADING); } }) .addUiStatusConfig(UiStatus.LOAD_ERROR,R.layout.layout_error_view,R.id.tv_retry_loading,new OnRetryListener(){ @Override public void onUiStatusRetry(@NonNull Object target, @NonNull IUiStatusController controller, @NonNull View trigger) { controller.changeUiStatus(UiStatus.LOADING); } }) .addUiStatusConfig(UiStatus.LOADING, R.layout.layout_loading_view) .setWidgetMargin(UiStatus.LOADING, 50,0);
不是初始化问题,是你调用顺序问题。 1.先调用bindFragment方法绑定内容视图; 2.绑定之后才能使用changeUiStatus等方法切换视图状态。 你在子类的initContentView当中调用和在BaseFragment调用都是将其放在了bindFragment之前进行的。
@FengChenSunshine 多谢。
@Override public View onCreateView(@NotNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {