我一直在处理片段一段时间,而且我觉得令人沮丧的是我无法从片段中获得活动状态。我不能做像
这样的事情 if (getActivity().getState == ActivityState.PAUSED)
是否有任何通用方法来处理片段中的活动生命周期更改,而不需要在活动中使用大量样板和回调覆盖,或者我是否必须自己手动实现某个状态管理器?
修改 例: 在活动中我需要加载数据。如果数据为空,则显示一个片段(如果不为空) - 显示另一个片段。因此,异步调用开始,同时活动进入暂停状态。提交片段会导致异常。
getAllXCommand.execute(new Callback<Result<List<X>>>() {
@Override
public void onSuccess(Result<List<X>> data) {
Logger.d(String.format("Received addresses: %d", data.getData().size()));
//How to get state of activity here?
if (data.getData().isEmpty()) {
setEmptyFragment();
} else {
setXFragment(data.getData());
}
addRemovePresenter.enableAddAction();
}
});
答案 0 :(得分:0)
在onPause
和onResume
中更改的活动中添加一个布尔变量并进行检查。
答案 1 :(得分:0)
好的,我做了我不想做的事情。我为我感兴趣的活动状态的所有活动和枚举创建了基本活动。
public class BaseActivity extends Activity{
private ActivityState activityState;
public ActivityState getActivityState() {
return activityState;
}
@Override
protected void onResume() {
super.onResume();
activityState = ActivityState.RESUMED;
}
@Override
protected void onPause() {
super.onPause();
activityState = ActivityState.PAUSED;
}
@Override
protected void onStop() {
super.onStop();
activityState = ActivityState.STOPPED;
}
@Override
protected void onDestroy() {
super.onDestroy();
activityState = ActivityState.DESTR0YED;
}
}
public enum ActivityState {
RESUMED(true), PAUSED, STOPPED, DESTR0YED;
boolean canAddFragment;
ActivityState(boolean canAddFragment) {
this.canAddFragment = canAddFragment;
}
ActivityState() {
this(false);
}
public boolean canAddFragment() {
return canAddFragment;
}
}