我想重构我的自定义视图以使用Android架构组件。但是,我看到了
ViewModelProviders.of(...)
仅采用活动或片段。知道如何让它工作吗?我应该使用片段而不是自定义视图吗?
答案 0 :(得分:0)
虽然不推荐,但可以在 View 中获取一个 ViewModel 实例。根据{{3}}:
<块引用>虽然在 Activity 或 Fragment 中获取 ViewModel 很容易,但在 View 中获取此实例并不简单。这背后的主要原因是因为 Views 应该独立于所有处理,即使您的所有逻辑都在 ViewModel 内,您在 View 内访问该 ViewModel 的事实使它依赖于它不应该依赖的东西。控制 View 的推荐方式是根据 ViewModel 的状态从 Fragment 或 Activity 向其传递参数。
重点是尝试从上下文中获取 Activity:
Enter the number of vertices: 2
Please label the vertices ('A', 'B', 'C', etc.)
Label for vertex 1: A
Label for vertex 2: B
Enter two edges between OUTPUT i and i+1 vertices (e.g. 1 5): 1 5
Enter the weight of this edge: 2
Segmentation fault (core dumped)
...Program finished with exit code 139
Press ENTER to exit console.
如前所述,如果可能,我会尽量避免这种方法。