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() のみが繰り返し呼び出されると思いました。