2

我有一个显示 GPUImageViews 的 ViewPager。在为每个页面创建实例时,一切看起来都很棒。当我尝试向后滑动以加载上一页时,问题就出现了。这是我的 onCreateView 代码。

public View onCreateView(LayoutInflater inflater, ViewGroup container,
        Bundle savedInstanceState) {
    //I store my previous pages in an imageArray variable to prevent application from rendering image over and over again.
    temp = imageArray[this.index]; //temp is a GPUImageView; assume initialized
    if (temp.getParent() != null) {
        ((ViewGroup) temp.getParent()).removeView(temp);
    }
    temp.setLayoutParams(new LayoutParams(LayoutParams.WRAP_CONTENT,
            LayoutParams.WRAP_CONTENT));
    return temp;
}

当我添加removeView()视图寻呼机时,总是返回黑屏。我尝试关闭,removeView()但它总是给我错误“子视图有现有的父...首先删除父视图。”

编辑:更具体地说,我添加了我的 onCreate()、init() 和 renderImage() 函数。顺便说一句,这是一个片段,对于我的 PagerAdapter,我正在使用 FragmentPagerAdapter

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    getActivity().findViewById(R.id.saveBtn).setOnClickListener(this);
    this.init();
    this.renderImage();
}

private void init() {
    temp = new GPUImageView(getActivity());
    this.img = new GPUImageView(getActivity()); //the original image
    this.img.setImage(imgUri);
}

private void renderImage() {
    temp = this.img;
    temp.setFilter(Filter.setFilter(getActivity(), this.filterPosition));
    temp.requestRender();
    imageArray[this.filterPosition] = temp;
}

我尝试调试以查看我的应用程序是如何工作的......似乎在创建新实例时,onCreate() 将始终被调用,然后是 onCreateView()。根据本指南的生命周期,我认为只会重复调用 onCreateView()。

4

0 回答 0