gpt4 book ai didi

android - 如何使用 Roboelectric 测试在 ViewTreeObserver 的 onGlobalLayout 中执行的代码?

转载 作者:太空狗 更新时间:2023-10-29 13:19:00 25 4
gpt4 key购买 nike

我的 fragment 中有以下代码:

public void someMethod()
{
scrollView.getViewTreeObserver().addOnGlobalLayoutListener( new ViewTreeObserver.OnGlobalLayoutListener()
{
@Override
public void onGlobalLayout()
{

// code that I want to test

}
}
}

但是,当我尝试测试此方法时,我无法在 GlobalLayoutListener 中运行代码。我尝试以不同的方式强制执行监听器,但是当我检查调试时,scrollerView 没有任何 GlobalLayoutListeners。

我要测试的代码在 fragment 中,这是我在测试中已经尝试做的:

SupportFragmentTestUtil.startVisibleFragment( fragment );
fragment.scrollView.getViewTreeObserver().dispatchOnGlobalLayout();

我也试过:

shadowOf(fragment.scrollView.getViewTreeObserver()).fireOnGlobalLayoutListeners();

然而,监听器中的代码永远不会执行。

最佳答案

我通过使用以下参数手动调用 Fragment 的 createView 方法解决了这个问题:

    FrameLayout container = new FrameLayout( RuntimeEnvironment.application );
fragment.createView( LayoutInflater.from( RuntimeEnvironment.application ), container );
FrameLayout container = new FrameLayout( RuntimeEnvironment.application );
fragment.createView( LayoutInflater.from( RuntimeEnvironment.application ), container );

终于添加了 globalLayoutListener,当我执行以下代码时,onGlobalLayout() 方法正确执行:

shadowOf( fragment.scrollView.getViewTreeObserver() ).fireOnGlobalLayoutListeners();

关于android - 如何使用 Roboelectric 测试在 ViewTreeObserver 的 onGlobalLayout 中执行的代码?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31417811/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com