【问题标题】:Call OnLoadFinished after return to fragment返回片段后调用 OnLoadFinished
【发布时间】:2015-09-08 01:06:08
【问题描述】:

我在使用 AsyncTaskLoader 时遇到了一些问题。 我的活动有 2 个片段:FragmentA 和 FragmentB。在 onCreateView() 的 FragmentA,我启动了我的加载器。它启动、加载数据并将数据返回给 onLoadFinished()。没关系。现在我用 Fragment B 替换 FragmentA:

FragmentB fragmentB = FragmentB.createInstance(movieId);
FragmentTransaction fragmentTransaction = getSupportFragmentManager().beginTransaction();
fragmentTransaction.addToBackStack(null);
fragmentTransaction.replace(R.id.fragment_container, fragmentB).commit();

之后我点击返回按钮并从片段 B 返回片段 A。在返回片段 A 之后,我再次调用 onLoadFinished(),但我不想要它。

我的加载器:

private Response data;

public Loader(Context context) {
    super(context);
}

@Override
public void deliverResult(Response data) {
    if(isReset()) {
        return;
    }
    if(isStarted())
        super.deliverResult(data);
}

@Override
protected void onStartLoading() {
    if (this.data != null) {
        deliverResult(this.data);
    }

    if (this.data == null) {
        forceLoad();
    }
}

@Override
protected void onStopLoading() {
    cancelLoad();
}

@Override
protected void onReset() {
    onStopLoading();
    if(this.data != null) {
        data = null;
    }
}

【问题讨论】:

    标签: android loader


    【解决方案1】:

    不要用这个fragmentTransaction.replace(R.id.fragment_container, fragmentB).commit();代替replace调用add方法添加片段

    fragmentTransaction.add(R.id.fragment_container, fragmentB).commit();
    

    【讨论】:

    • 它有效。 onLoadFinished() 调用重新添加片段到活动?
    猜你喜欢
    • 1970-01-01
    • 2014-01-28
    • 1970-01-01
    • 2016-08-19
    • 2014-02-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多