java.lang.RuntimeException:在错误的GL上下文中应用效果!在android应用程序中,同时在图



我已经搜索了这个问题,但找不到任何解决方案。我正在开发一个照片编辑器应用程序,该应用程序使用第三方库对图像应用效果。我在水平回收视图中显示了应用程序中可用的所有过滤器。但是当我滚动回收器视图时,我的应用程序崩溃了这是我的适配器代码

class MyFilterAdapter ():RecyclerView.Adapter<MyFilterAdapter.MyViewHolder>(){

lateinit var filterDataSet:ArrayList<Filter>
lateinit var photoEditor1r: PhotoEditor
init {
setUpFilters()
}
class MyViewHolder (itemview:View):RecyclerView.ViewHolder(itemview) {
val  photoEditorViewfilter=itemview.findViewById<PhotoEditorView>(R.id.photoEdiorviewfilter)

}
override fun onCreateViewHolder(
parent: ViewGroup,
viewType: Int
): MyFilterAdapter.MyViewHolder {
val v=LayoutInflater.from(parent.context).inflate(R.layout.filter_list,parent,false)
return MyViewHolder(v)
}

override fun getItemCount(): Int {
return filterDataSet.size
}
override fun onBindViewHolder(holder: MyFilterAdapter.MyViewHolder, position: Int) {
val filter:Filter=filterDataSet.get(position)
holder.photoEditorViewfilter.source.setImageResource(filter.imgDrawableId)
PhotoEditor.Builder(MainApplication.applicationContext(),holder.photoEditorViewfilter).build().setFilterEffect(filter.photoFilter)
}
private fun setUpFilters(){
filterDataSet=ArrayList()
filterDataSet.add(Filter(R.drawable.dinner, PhotoFilter.BRIGHTNESS))
filterDataSet.add(Filter(R.drawable.dinner,PhotoFilter.AUTO_FIX))
filterDataSet.add(Filter(R.drawable.dinner,PhotoFilter.CONTRAST))
filterDataSet.add(Filter(R.drawable.dinner,PhotoFilter.BLACK_WHITE))
filterDataSet.add(Filter(R.drawable.dinner,PhotoFilter.CROSS_PROCESS))
filterDataSet.add(Filter(R.drawable.dinner,PhotoFilter.DOCUMENTARY))
filterDataSet.add(Filter(R.drawable.dinner,PhotoFilter.FISH_EYE))
filterDataSet.add(Filter(R.drawable.dinner,PhotoFilter.FILL_LIGHT))
filterDataSet.add(Filter(R.drawable.dinner,PhotoFilter.TINT))
}
}

这是我的错误日志

E/AndroidRuntime: FATAL EXCEPTION: GLThread 43113
Process: com.androidevs.photoeditor, PID: 18429
java.lang.RuntimeException: Applying effect in wrong GL context!
at android.media.effect.EffectContext.assertValidGLState(EffectContext.java:109)
at android.media.effect.FilterEffect.beginGLEffect(FilterEffect.java:64)
at android.media.effect.SingleFilterEffect.apply(SingleFilterEffect.java:70)
at ja.burhanrashid52.photoeditor.ImageFilterView.applyEffect(ImageFilterView.java:263)
at ja.burhanrashid52.photoeditor.ImageFilterView.onDrawFrame(ImageFilterView.java:100)
at android.opengl.GLSurfaceView$GLThread.guardedRun(GLSurfaceView.java:1585)
at android.opengl.GLSurfaceView$GLThread.run(GLSurfaceView.java:1280)

这可能是因为Recyclerview正在重用/回收某些视图。这些回收的视图仍然由引用它的PhotoEditor.Builder对象持有,因此当重复使用时,它会将效果应用到错误的视图Holder。将Viewholder对象设置为viewHolder.setIsRecyclable(false);,然后设置recyclerview.getRecycledViewpol((.setMaxRecycledView(0,0(

相关内容

最新更新