android - 场景过渡返回错误的recyclerview item
问题描述
我有一个装满物品的回收站视图。我使用 Firestore 作为数据存储。这是我在适配器中的 onBindViewHolder 期间设置转换名称的方法。
expressionView.setTransitionName(MainActivity.FIELD_EXPRESSION + snapshot.getId());
definitionView.setTransitionName(MainActivity.FIELD_DEFINITION + snapshot.getId());
buttonsView.setTransitionName("buttons" + snapshot.getId());
这就是我在片段中调用详细活动的方式:
ActivityOptions options = ActivityOptions.makeSceneTransitionAnimation(getActivity(),
Pair.create(expressionView, ViewCompat.getTransitionName(expressionView)),
Pair.create(definitionView, ViewCompat.getTransitionName(definitionView)),
Pair.create(buttonsView, ViewCompat.getTransitionName(buttonsView)));
Log.d(TAG, "transitionName: "+ ViewCompat.getTransitionName(expressionView));
Log.d(TAG, "transitionName: "+ ViewCompat.getTransitionName(definitionView));
Log.d(TAG, "transitionName: "+ ViewCompat.getTransitionName(buttonsView));
/*ActivityOptions options = ActivityOptions.makeCustomAnimation(getActivity(), R.anim
.activity_in, R.anim.activity_out);*/
startActivity(intent, options.toBundle());
在详细活动中,我将转换名称设置如下:
mExpressionView.setTransitionName(MainActivity.FIELD_EXPRESSION + mEntryId);
mDefinitionView.setTransitionName(MainActivity.FIELD_DEFINITION + mEntryId);
mButtonsView.setTransitionName("buttons" + mEntryId);
从 recyclerview 项目到详细信息活动的转换工作正常。但是当我点击后退按钮时,转换不会回到点击的项目。事实上,不止一项是动画的。我还在我的风格中启用了共享元素转换
解决方案
打电话mAdapter.setHasStableIds(true);
解决问题
推荐阅读
- java - Java如何在超时后杀死线程而不检查中断
- python-3.x - 从python中的数字周数和季度内的周数获取季度数?
- scala - 如何在Scala中替换/屏蔽地图值的前n位/字符串
- kubernetes - 如何从一个集群中获取 Kubernetes 机密以应用于另一个集群?
- python - 将选定的行导出到python中的列表中
- python - 为什么我不能从字符串中取出一个 10 位数字并用它在字典中查找相应的键?
- ruby-on-rails - 问题将参数从erb模板传递到Rails中的控制器
- php - 如何使用 PHP 可靠且安全地验证 CAPTCHA
- hyperledger-fabric - 2 CA 侦听同一端口 7054
- python - strptime:时间数据与格式不匹配