Вид рециркулятора находится во фрагменте (androidx), прикрепленном к основному виду деятельности.Это часть адаптера утилизатора, от которой называется новое действие:
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);
}
}
}
Это ошибка, которую я получаю (один раз для каждого общего элемента, который я передаю в ActivityOptionsCompat):
E / BufferItemConsumer: [unnamed-29987-0] Не удалось освободить буфер: неизвестная ошибка -1 (1)
Эта ошибка выдается мне каждый раз, когда вы вызываете "finishAfterTransition ();"ошибка, при которой текущее окно теряет фокус
Редактировать: Как и предполагал Махабуб Карим, я заменил ссылку на операцию обратным вызовом (к сожалению, это не меняет сообщение об ошибке):
//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);
}
...