The recyclerview is in a (androidx) fragment attached to the main activity. This is the part of the recycler adapter from which the new activity is called:
MainActivity activity;
@Override
public void onBindViewHolder(final MyRecyclerAdapter.ViewHolder viewHolder, final int position) {
final View background = viewHolder.background;
ViewCompat.setTransitionName(background,"background_" + position);
background.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent(activity, DetailActivity.class);
Bundle options = ActivityOptionsCompat.makeSceneTransitionAnimation(activity, background, "background_" + position).toBundle();
activity.startActivity(intent, options);
}
}
}
That's the error I get (once for every shared element i pass to ActivityOptionsCompat):
E/BufferItemConsumer: [unnamed-29987-0] Failed to release buffer: Unknown error -1 (1)
This error gives me every time you call "finishAfterTransition();" a bug where the current window loses focus
Edit: As Mahabub Karim suggested, I replaced the Activity Reference with a callback (unfortunately it does not change the error message):
//Adapter Class
OnItemClickListener onItemClickListener;
public static interface OnItemClickListener {
public abstract void onItemClicked(MyRecyclerAdapter.ViewHolder viewHolder, int position);
}
@Override
public void onBindViewHolder(final MyRecyclerAdapter.ViewHolder viewHolder, final int position) {
final View background = viewHolder.background;
ViewCompat.setTransitionName(background,"background_" + position);
background.setOnClickListener(new View.OnClickListener() {
@Override
public void onClick(View v) {
onItemClickListener.onItemClicked(viewHolder,position);
}
}
}
public void setListener(OnItemClickListener onItemClickListener){
this.onItemClickListener = onItemClickListener;
}
//MainActivity Class
...
@Override
public void onItemClicked(MyRecyclerAdapter.ViewHolder viewHolder, int position) {
final View background = viewHolder.background;
Intent intent = new Intent(this, DetailActivity.class);
Bundle options = ActivityOptionsCompat.makeSceneTransitionAnimation(this, background, "background_" + position).toBundle();
startActivity(intent, options);
}
...