1

我在我的应用程序中使用了Conductor 框架

该应用程序通常固定为纵向状态,但我有 2 个Controllers使用ActivityInfo.SCREEN_ORIENTATION_FULL_SENSOR并响应设备方向变化

  • Controller A - 显示所拍摄图像的摘要
  • Controller B - 是相机交互

所以当A启动时,它会立即启动B并在拍摄图像后显示摘要。

A持有一个RecyclerView使用的FlexboxLayoutManager(当我尝试用简单的LinearLayoutManager没有改变的情况下替换布局管理器时)

我有 3 个工作正常的流程:

  1. 设备在纵向-> A启动 -> B启动 -> 拍摄图像 -> B关闭 -> 图像显示A
  2. 设备在横向-> A启动 -> B启动 -> 拍摄图像 -> B关闭 -> 图像显示A
  3. 设备处于纵向-> A启动 -> B启动 -> 设备方向更改为横向-> 拍摄图像 -> 方向更改为纵向-> B关闭 -> 图像显示A

但是这种情况失败了:

设备处于纵向-> A启动 -> B启动 -> 设备方向更改为横向-> 拍摄图像 -> B关闭 -> 图像不在A中显示

在所有流程中,我看到adapter知道新项目,并且getItemViewType,onCreateViewHolderonBindViewHolder以正确的位置调用

失败的流程实际上是我作为用户最自然的流程:(

  • 有谁知道发生了什么?
  • 您能否建议其他调查方向?

更新:

  • 回收站视图定义为android:layout_height="wrap_content"
  • android:layout_height="match_parent"在使用作品时更改为LinearLayoutManager(看起来很难看)
  • 将其更改回FlexboxLayoutManager之前的所有流程都会失败

因此,我现在正在FlexboxLayoutManager查看是否可以轻松解决此问题-我认为我的流程中实际上不需要回收站视图

4

1 回答 1

0

似乎解决方案只是将RecyclerViewfrom更改android:layout_height="wrap_content"android:layout_height="match_parent"

在上面的更新中,我说它仍然不能与FlexboxLayoutManager.

原始代码不是我写的,所以我不知道为什么wrap_content要使用

于 2020-03-05T15:49:04.287 回答