Chame removeView () no pai da criança primeiro

Primeiro um pouco de fundo:

Eu tenho um layout dentro de uma scrollview. Inicialmente, quando o usuário rola na tela, a exibição de rolagem rola. No entanto, após uma certa quantidade de rolagem, desativei a rolagem na exibição de rolagem e movi o "foco da rolagem" para uma visualização da web dentro do layout filho. Dessa forma, o scrollview adere e todos os eventos de rolagem vão para o webview dentro del

Então, para uma solução, quando o limite de rolagem é atingido, removo o layout filho da scrollview e o coloco no pai da scrollview (e torno a scrollview invisível

// Remove the child view from the scroll view
scrollView.removeView(scrollChildLayout);

// Get scroll view out of the way
scrollView.setVisibility(View.GONE);

// Put the child view into scrollview's parent view
parentLayout.addView(scrollChildLayout);

Ideia geral: (-> significa contém)

Antes: parentlayout -> scrollview -> scrollChildLayout

After: parentLayout -> scrollChildLayout

O código acima está me dando essa exceção:

java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
           at android.view.ViewGroup.addViewInner(ViewGroup.java:1976)
           at android.view.ViewGroup.addView(ViewGroup.java:1871)
           at android.view.ViewGroup.addView(ViewGroup.java:1828)
           at android.view.ViewGroup.addView(ViewGroup.java:1808)

Você sabe o que está acontecendo? Estou claramente chamando removeView no pai.

questionAnswers(10)

yourAnswerToTheQuestion