Gdybym użyć tagu merge
jako znacznika macierzystego dla układu mojego fragment, w biegnę na dwie kwestie:Czy możesz użyć znacznika scalania z fragmentami?
pierwsze,
onCreateView()
, jeśli nie określić dołączyć do korzeni, to pojawia się błąd:android.view.InflateException: <merge /> can be used only with a valid ViewGroup root and attachToRoot=true
i gdybym przywiązują do korzenia, pojawia się błąd:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
Znalazłem fajną odpowiedź na inne pytanie, stwierdzając, że biblioteka fragmentów automatycznie dołącza dziecko do grupy widoku nadrzędnego, którą określisz w zamian. Sugerowałeś, że musisz ustawić attachToRoot
na false
. W przypadku tagu merge
jest to wymagane.
Czy można obejść jedną z tych reguł, aby użyć znacznika merge
do układu fragmentu?
tak więc 'android.view.InflateException: może być używany tylko z ważnego pierwiastka ViewGroup i attachToRoot = TRUE to z powodu' attachToRoot = FALSE (korzeń ViewGroup jest ważna) ? –
@Mr_and_Mrs_D Tak, ponieważ dla 'false' zawyżony układ nie zostanie dodany do' ViewGroup' i właśnie to wymaga tag 'merge'. Ponadto, myślę, że ten sam wyjątek zostanie zgłoszony, jeśli użyjesz 'true' dla' attachToRoot', ale z 'null'' ViewGroup' dla drugiego parametru (oznaczającego brak rodzica, do którego należy dołączyć zawyżony układ). – Luksprog
Dzięki - jak denerwujące - ten sam komunikat o błędzie dla 2 sytuacji. Odnośnie 'scalania' i' fragmentów' możesz znaleźć [to] (http://stackoverflow.com/a/15315289/281545) interesujące –