下面的类有一个非常独特的生命周期,这需要我暂时清空lateinit属性
class SalesController : BaseController, SalesView {
@Inject lateinit var viewBinder: SalesController.ViewBinder
@Inject lateinit var renderer: SalesRenderer
@Inject lateinit var presenter: SalesPresenter
lateinit private var component: SalesScreenComponent
override var state = SalesScreen.State.INITIAL //only property that I want to survive config changes
fun onCreateView(): View { /** lateinit variables are set here */ }
fun onDestroyView() {
//lateinit variables need to be dereferences here, or we have a memory leak
renderer = null!! //here's the problem: throws exception bc …Run Code Online (Sandbox Code Playgroud) 我正在将Conductor API与Android DataBinding一起使用,并且一直在尝试从控制器视图到另一个控制器视图进行简单的共享元素转换,但它无法正常工作.
点击demoS列表中的"Android数据绑定"演示将带您进入一个屏幕,点击显示的textView应该将其转换到下一个屏幕.
但是现在它已经消失了.
更新:我认为在BindedBaseController类中有些不对劲?
public abstract class BindedBaseController extends Controller {
private ViewDataBinding mViewDataBinding;
protected BindedBaseController() {
}
protected BindedBaseController(Bundle args) {
super(args);
}
protected abstract View inflateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container);
@NonNull
@Override
protected View onCreateView(@NonNull LayoutInflater inflater, @NonNull ViewGroup container) {
View view = inflateView(inflater, container);
mViewDataBinding = DataBindingUtil.bind(view);
onViewBound(view);
return view;
}
protected void onViewBound(@NonNull View view) {
}
@Override
protected void …Run Code Online (Sandbox Code Playgroud) android shared-element-transition android-databinding conductor
我正在为使用Conductor编写的应用程序编写Espresso测试。我想为每个测试指定要启动哪个控制器,这样我就不需要Espresso从每个活动的开始Activity中单击应用程序。由于只有一个活动,并没有太多的SO或google一下指挥我能找到最接近的是这个问题吗?还是不可能?
我尝试将路由器设为静态并添加吸气剂,以尝试设置特定的根进行测试,但均未成功。
android.view.ViewRootImpl $ CalledFromWrongThreadException:只有创建视图层次结构的原始线程才能触摸其视图。
在MainActivity中:
public static Router getRouter() {
return router;
}
Run Code Online (Sandbox Code Playgroud)
在仪器测试中:
@Rule
public ActivityTestRule<MainActivity> testRule = new ActivityTestRule<>(MainActivity.class);
@Before
public void setUp() {
Router router = testRule.getActivity().getRouter();
router.setRoot(RouterTransaction.with(new ControllerIwantToTest()));
}
@Test
public void titleIsDisplayed() {
onView(withText("My Controllers Title")).check(matches(isDisplayed()));
}
Run Code Online (Sandbox Code Playgroud) 我有一些具有自己实现的控制器类。是否可以在视图组中将一个视图插入另一个视图?
有人在生产代码上使用 Netflixconductor 吗?如果是,您是使用 Orkes 的托管版本还是自己直接集成和管理?希望在这里有任何见解,因为我们对如何选择感到困惑。
我们尝试了直接集成的 POC,但在使用 Postgres 进行持久性和其他部署相关问题时遇到了问题,并且在调试问题时无法找到良好的社区帮助。